我有一个编辑视图,允许我的用户更新有关车辆的技术信息。执行编辑时,我想将客户编号和车辆编号传递给控制器,以便我可以对客户和车辆进行审计日志记录,以记录更改。
我的控制器中有这个代码:
GET:
public ActionResult Edit(int id, int? AuditLogID, int? ErrorLogID, int CustomerNo, int VehicleNo)
POST:
public ActionResult Edit(int id, VehicleAssetTechnicalInformation technicalInformation, int CustomerNo, int VehicleNo)
应该要求CustomerNo和VehicleNo - 如果没有这些细节,更新不应该继续,因为必须审核所有内容。
在我的Edit.cshtml视图中,我有这个:
@using (Html.BeginForm("Edit",
"VehicleAssetTechnicalInformation",
FormMethod.Post,
new { CustomerNo = (int)ViewBag.CompanyID,
VehicleNo = (int)ViewBag.VehicleID }))
在我的视图中我甚至向用户显示ViewBag.CompanyID和ViewBag.VehicleID,因此我知道它们在加载视图时存在。
但是,当我提交表格时,我会得到以下内容:
The parameters dictionary contains a null entry for parameter 'CustomerNo' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32, VehicleAssetTechnicalInformation, Int32, Int32)
由于某种原因,CustomerNo和VehicleNo未作为表单提交。
我可以做些什么来确保传递这些值?
答案 0 :(得分:2)
据我所知,你无法在之后绑定单个参数,你已经定义了一个模型参数(假设所有参数都属于模型)。我的建议是将所有参数合并到一个视图模型中,例如
public class VehicleSubmissionViewModel
{
public int Id { get; set; }
public int CustomerNo { get; set; }
public int VehicleNo { get; set; }
public VehicleAssetTechnicalInformation TechnicalInfo { get; set; }
}
...
public ActionResult Edit(VehicleSubmissionViewModel viewModel)
{
...
}