いくつかのネストされたクラスで構成される ViewModel クラスがあります。
public class UserAccountViewModel : UserProfileViewModel
{
public UserAccountEmailViewModel UserAccountEmail { get; set; }
public UserAccountLocationViewModel UserAccountLocation { get; set; }
public UserAccountPasswordViewModel UserAccountPassword { get; set; }
}
これからレンダリングされる HTML ( model.UserAccountEmail.Emailに注意してください):
<div class="editor-label">
@Html.LabelFor(model => model.UserAccountEmail.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserAccountEmail.Email)
@Html.ValidationMessageFor(model => model.UserAccountEmail.Email)
</div>
これは:
name="UserAccountEmail.Email"
名前はシンプルな方がいいEmail
変更ViewData.TemplateInfo.HtmlFieldPrefix
しても役に立ちませんでした。htmlFieldName
ラベルと検証メッセージをレンダリングされた HTML 要素と一致させる必要があるため、 inのオーバー@Html.EditorFor
ロードは機能しません (これらの関数では htmlFieldName のオーバーロードはありません)。
このためにパーシャルを作成しないことをお勧めします。
編集:
ええと...パーシャルを使用することは実際にはそれほど悪くありません。それは実際には非常に理にかなっています。