0

ネストされたクラスを持つエンティティ モデルがあります。FSRHire が親で、Employee が子です。

class FSRHire {
    ...
    public virtual Employee Employee
    ...
}
class Employee {
    ...
    public string LastName {get;set;}
    public DateTime DOB {get;set;}
    ...
}

意見:

<div class="editor-label">
    @Html.LabelFor(model => model.Employee.LastName)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Employee.LastName)
    @Html.ValidationMessageFor(model => model.Employee.LastName)
</div>
<div class="editor-label">
    @Html.LabelFor(model => model.Employee.DOB)
</div>
<div class="editor-field">
    @Html.TextBox(Html.IdFor(model => model.Employee.DOB).ToString(), Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" })
    @Html.ValidationMessageFor(model => model.Employee.DOB)
</div>

コントローラーへの投稿が機能しません。リクエストのデータは次のとおりです。

...Employee.LastName=Worker&Employee_DOB=01%2F01%2F1970& ...

モデル バインダーは、問題なく名前を取得します。Employee.DOB が null です。

おそらく、DOB フィールドのアンダースコアが原因です。(従業員_DOB)。どうしてこうなったのか、どうすれば治るのか気になります。

4

1 に答える 1

1

次の形式にする必要があります。

...Employee.LastName=Worker&Employee.DOB=01%2F01%2F1970& ...

変更元:

Employee_DOB=01%2F01%2F1970&
//      ^

Employee.DOB=01%2F01%2F1970&
//      ^

ビューに関して:

@Html.TextBox(Html.IdFor(model => model.Employee.DOB).ToString(), Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" })

Web.Mvc dll にはメソッドがありませIdForん。おそらく自分で作成したか、何らかのライブラリを使用したため、正しく動作していません。

ビューの行を次のように変更します。

 @Html.TextBoxFor(model => model.Employee.DOB, Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" })
于 2012-05-14T16:53:38.520 に答える