我有一个模型,其中包含有关预订出租车的数据。
在模型中是一个带有时间,价格,车辆类型的报价列表,其中显示了使用foreach的列表。每次foreah循环时,它会构建一个表单和一个提交按钮,将我带到控制器中的“BookingStage1”操作。我还添加了一个隐藏字段,其中填充了特定报价的预订信息。
所以,我希望当它在我的控制器中击中动作结果时,模型将完全填充,就像它在视图中一样。但它是空的,没有任何数据。
我希望随着用户在各种搜索,结果和预订屏幕上的进展,在多个控制器之间传递填充的模型......
是否可以将完全填充的模型从视图传递回下一个控制器?
由于
在我的搜索结果页面中,我有以下表格:
using (Html.BeginForm("BookingPage1", "SearchResults", FormMethod.Post))
我的表格中也有一个隐藏字段如下:
<input type="hidden" id="BookingID" name="ChosenBookingID" value='@item.QuotationID' />
发布到我的控制器,如下所示:
[HttpPost]
public ActionResult BookingPage1(string ChosenBookingID, Route theRoute)
{
//this does noting yet.
return View();
}
但是路径总是空的:(
答案 0 :(得分:35)
我希望这个完整的例子可以帮到你。
这是 TaxiInfo 类,其中包含有关乘坐出租车的信息:
namespace Taxi.Models
{
public class TaxiInfo
{
public String Driver { get; set; }
public Double Fare { get; set; }
public Double Distance { get; set; }
public String StartLocation { get; set; }
public String EndLocation { get; set; }
}
}
我们还有一个便利模型,其中包含 TaxiInfo(s)的列表 :
namespace Taxi.Models
{
public class TaxiInfoSet
{
public List<TaxiInfo> TaxiInfoList { get; set; }
public TaxiInfoSet(params TaxiInfo[] TaxiInfos)
{
TaxiInfoList = new List<TaxiInfo>();
foreach(var TaxiInfo in TaxiInfos)
{
TaxiInfoList.Add(TaxiInfo);
}
}
}
}
现在在家庭控制器中,我们有默认的索引操作,对于此示例,该操作会生成两个出租车司机,并将它们添加到TaxiInfo中包含的列表中:
public ActionResult Index()
{
var taxi1 = new TaxiInfo() { Fare = 20.2, Distance = 15, Driver = "Billy", StartLocation = "Perth", EndLocation = "Brisbane" };
var taxi2 = new TaxiInfo() { Fare = 2339.2, Distance = 1500, Driver = "Smith", StartLocation = "Perth", EndLocation = "America" };
return View(new TaxiInfoSet(taxi1,taxi2));
}
视图的代码如下:
@model Taxi.Models.TaxiInfoSet
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach(var TaxiInfo in Model.TaxiInfoList){
<form>
<h1>Cost: $@TaxiInfo.Fare</h1>
<h2>Distance: @(TaxiInfo.Distance) km</h2>
<p>
Our diver, @TaxiInfo.Driver will take you from @TaxiInfo.StartLocation to @TaxiInfo.EndLocation
</p>
@Html.ActionLink("Home","Booking",TaxiInfo)
</form>
}
ActionLink 负责重定向到主页控制器的预订操作(并传入相应的TaxiInfo对象),该操作无法解决,如下所示:< / p>
public ActionResult Booking(TaxiInfo Taxi)
{
return View(Taxi);
}
这将返回以下视图:
@model Taxi.Models.TaxiInfo
@{
ViewBag.Title = "Booking";
}
<h2>Booking For</h2>
<h1>@Model.Driver, going from @Model.StartLocation to @Model.EndLocation (a total of @Model.Distance km) for $@Model.Fare</h1>
视觉游览: