【发布时间】:2016-09-15 04:07:42
【问题描述】:
我在过去两天摸不着头脑,包括我正在尝试构建的信息。
我正在尝试构建的功能: 简单的行程管理器应用程序
在索引页面上获取行程名称和人数的值并提交,这会导致另一个表单(视图)根据人数生成文本框并将该表单数据传递给另一个控制器,我将在其中保存进入数据库。
型号: 旅行
public class Trip
{
public Trip()
{
//people = new List<People>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Income { get; set; }
public decimal Expense { get; set; }
public int NumberOfPeople { get; set; }
public virtual IList<People> people{ get; set; }
}
人
public class People
{
public int Id { get; set; }
public int TripId { get; set; }
[DisplayName("Name:")]
public string Name { get; set; }
[DisplayName("Initial Deposite:")]
public decimal InitialDeposite { get; set; }
}
这就是 Index.cshtml 视图的样子,这里我输入了两个输入名称和人数:
@model TripManager.Models.Trip
@{
ViewBag.Title = "Welcome to Trip Manager";
}
<div class="jumbotron">
<h1>Trip Manager</h1>
<p class="lead">Trip Manager helps you calculate your group trip expenses in ease.</p>
</div>
<div class="row">
<div class="col-md-12 text-center">
@using (Html.BeginForm("Index","Trip"))
{
@Html.AntiForgeryToken();
@*@Html.HiddenFor(m=>m.Id)*@
<p class="text-info">@Html.LabelFor(m => m.Name)</p>
<p class="glyphicon-search">@Html.EditorFor(m => m.Name) @Html.ValidationMessageFor(m => m.Name)</p>
<p class="text-info">@Html.LabelFor(m => m.NumberOfPeople)</p>
<p class="glyphicon-search">@Html.EditorFor(m => m.NumberOfPeople) @Html.ValidationMessageFor(m => m.NumberOfPeople)</p>
<p><input type = "submit" class="btn-success" name="btnTripInit" value="Go Trip" /></p>
}
</div>
</div>
通过控制器后操作索引(旅行行程)将这些输入传递给 member.cshtml 视图,如下所示,
public ActionResult Index(Trip trip)
{
if (!ModelState.IsValid)
{
return View(trip);
}
var mytrip = new Trip();
mytrip.Name = trip.Name;
mytrip.NumberOfPeople = trip.NumberOfPeople;
mytrip.people = new List<People>(trip.NumberOfPeople);
return View("Members", trip);
}
members.cshtml 视图如下...这里我正在为旅行模型中的 IList 生成文本框...一个用于名称的文本框和其他用于初始存款的文本框
@model TripManager.Models.Trip
{
@ViewBag.Title = "Please Enter Members Details";
}
<div class="row">
<div class="col-md-12 text-center">
@{
using (Html.BeginForm("FeedMemberData", "Trip",FormMethod.Post))
{
<hr />
@Html.HiddenFor(m=>m.Id)
for(int i=0;i<Model.NumberOfPeople;i++)
{
<p>Member @i Details</p>
@Html.HiddenFor(m => m.people[i].Id)
<p class="text-info">@Html.LabelFor(m=>m.people[i].Name) @Html.EditorFor(m => m.people[i].Name , new {@class="glyphicon-search"})
| @Html.LabelFor(m => m.people[i].InitialDeposite) @Html.EditorFor(m => m.people[i].InitialDeposite , new { @class = "glyphicon-search" })
</p>
}
<hr />
<p><input type="submit" class="btn-success" name="btnMemberInit" value="Save Details" /></p>
}
}
</div>
</div>
现在我应该如何将此表单数据发送到控制器并通过 EntityFramework 将其保存到数据库???
public ActionResult FeedMemberData(Trip trip)
{
//TODO
}
在这里旅行我得到了空......
【问题讨论】:
标签: asp.net asp.net-mvc list razor ienumerable