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 に答える