好的,所以我想将视图中的数据传回控制器中的Post方法。
观点:
@model IEnumerable< MvcMobile.Models.Trips>
<p>Time : @ViewBag.titi</p>
<p>ID :@ViewBag.iid </p>
<p>From : @ViewBag.From</p>
<p>To :@ViewBag.To </p>
Avaibliabe Trips :
@foreach (var item in Model)
{
if ( item.Time==ViewBag.titi)
{
<p>@item.TripID</p>
}
}
控制器中的我的HttpGet方法:
[HttpGet]
public ActionResult Book2(MvcMobile.Models.TicketsBooked tik)
{
ViewBag.titi = tik.Time;
ViewBag.iid = tik.TicketID;
ViewBag.from = tik.From;
ViewBag.To = tik.To;
var TripsList = db.Trips.ToList();
return View(TripsList);
}
在这种情况下,我无法使用动态对象传递变量,因为模型是 IEnumerable
我想将一个或两个文本框传回控制器,我该怎么做?
替代问题将是如何在视图中执行相同功能而不使模型 IEnumberable ?
并非常感谢。
答案 0 :(得分:1)
您应该阅读使用视图模型。基本上,最佳做法是仅将相关数据传递给视图。因此,在传递IEnumerable模型时,您将拥有一个具有IEnumerable属性的视图模型,以及您想要发布回控制器的额外属性。
例如:
public class ViewModel
{
public IEnumerable<MvcMobile.Models.Trips> Trips { get; set; }
public string ExtraValue { get; set; }
}
您的观点是:
@foreach(var trip in Model.Trips)
{
<p>Do stuff</p>
}
@Html.TextBoxFor(m => m.ExtraValue)
您的post方法将接受ViewModel。
[HttpPost]
public ActionResult Book2(ViewModel viewModel)
{
}
您可以阅读有关视图模型here或搜索Google / SO的更多信息。有许多例子。