我正在尝试将视图模型传递给控制器。
@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");
}
如果有人知道我做错了什么,这将不胜感激。
您可以发布您最终的URL文本吗?
但是,您可能需要替换Model = model.Model.booking booking = json.encode(model.booking(
哦。还有另一个概率。您在URL操作中命名参数"模型",但在方法签名中为"创建模型"。
我发现了我的问题,所以我要为任何遇到同一件事的人发布答案,并找到此线程。
因为URL操作中的两个名称称为模型,这将创建一个全新的ViewModel传递给视图。这是由于我认为的事实,该模型是我创建的动态模型,因此正在创建的对象是ExpandOobject。
解决方案将是将ExpandOobject投射到正确的类型,但是我发现了另一种使用tempdata解决我的特定问题的方法。无论哪种方式都可以工作。