1

我有一个编辑视图,允许我的用户更新有关车辆的技术信息。进行编辑时,我想将客户编号和车辆编号传递给控制器​​,以便我可以针对客户和车辆进行审核日志条目以记录更改。

我的控制器中有这段代码:

得到:

public ActionResult Edit(int id, int? AuditLogID, int? ErrorLogID, int CustomerNo, int VehicleNo)

邮政:

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 没有作为属性与表单一起提交。

我能做些什么来确保这些值被传递?

4

1 回答 1

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)
{
    ...
}
于 2013-11-05T11:40:57.567 回答