我正在尝试将视图模型传递给控制器。
@if (User.IsInRole("Customer"))
{
<input type="button" class="btn btn-danger" value="Rent Car" onclick="location.href='@Url.Action("PassingCar", "Bookings", new { id = item.VehicleID, Model = Model.Booking })'" />
}
我正在使用动态模型,因此可以在此视图中同时使用“车辆”和“预订”。
当代码到达我的控制器时,ID已被传递,但ViewModel中的数据已消失。
public ActionResult PassingCar( int id, CreateBookingViewModel createdModel)
{
///Checks that Vehicle exists in DB and v property is not null
if (v == null)
{
return HttpNotFound();
}
else
{
/// sets the Vehicle attribute of the BookingViewModel to vehicle passed over
createdModel.Vehicle = v;
}
return RedirectToAction("Create", "Bookings");
}
如果有人知道我在做什么错,将不胜感激。
答案 0 :(得分:0)
您可以发布最终到达的URL的文本吗?
但是,您可能会想将Model = Model.Booking替换为Model = JSON.Encode(Model.Booking)
哦。还有另一种可能性。您在Url Action中将参数命名为“ Model”,但在方法签名中将参数命名为“ createdModel”。
答案 1 :(得分:0)
我发现了我的问题,所以我将为遇到相同问题的任何人发布答案,并找到该线程。
因为URL动作中的两个名称都称为Model,所以这将创建一个传递给视图的全新ViewModel。这是由于我的视图中的事实,该模型是我创建的动态模型,因此要创建的对象是新的ExpandoObject。
一种解决方案是将ExpandoObject强制转换为正确的类型,但是我发现仅使用TempData即可解决我的特定问题的另一种方法。无论哪种方式都行得通。