Tre*_*iel 14 asp.net-mvc asp.net-mvc-4
我有一个模型的视图,其中包含有关预订出租车的数据.
在模型中是一个带有时间,价格,车辆类型的报价列表,其中显示了使用foreach的列表.每次foreah循环时,它会构建一个表单和一个提交按钮,将我带到控制器中的"BookingStage1"操作.我还添加了一个隐藏字段,其中填充了特定报价的预订信息.
所以,我希望当它在我的控制器中击中动作结果时,模型将完全填充,就像它与视图一样.但它是空的,没有任何数据.
当用户通过各种搜索,结果和预订屏幕进行时,我希望能够在多个控制器之间传递填充模型...
是否可以将完全填充的模型从视图传递回下一个控制器?
谢谢
在我的搜索结果页面中,我有以下表格:
using (Html.BeginForm("BookingPage1", "SearchResults", FormMethod.Post))
Run Code Online (Sandbox Code Playgroud)
我在表单中也有一个隐藏字段如下:
<input type="hidden" id="BookingID" name="ChosenBookingID" value='@item.QuotationID' />
Run Code Online (Sandbox Code Playgroud)
发布到我的控制器,看起来像这样:
[HttpPost]
public ActionResult BookingPage1(string ChosenBookingID, Route theRoute)
{
//this does noting yet.
return View();
}
Run Code Online (Sandbox Code Playgroud)
但是路径总是空的:(
Hen*_*nyH 36
我希望这个完整的例子可以帮到你.
这是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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我们也有拥有一个方便的模型列表的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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在在家庭控制器中我们有默认的索引操作,对于这个例子,它会生成两个出租车司机并将它们添加到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));
}
Run Code Online (Sandbox Code Playgroud)
视图的代码如下:
@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>
}
Run Code Online (Sandbox Code Playgroud)
的ActionLink的负责重新定向到的预约动作主页控制器(和传递适当TaxiInfo对象),它是defiend如下:
public ActionResult Booking(TaxiInfo Taxi)
{
return View(Taxi);
}
Run Code Online (Sandbox Code Playgroud)
这将返回以下视图:
@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>
Run Code Online (Sandbox Code Playgroud)
视觉游览:


| 归档时间: |
|
| 查看次数: |
92169 次 |
| 最近记录: |