2

いくつかのネストされたクラスで構成される 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 のオーバーロードはありません)。

このためにパーシャルを作成しないことをお勧めします。

編集:

ええと...パーシャルを使用することは実際にはそれほど悪くありません。それは実際には非常に理にかなっています。

4

1 に答える 1

4

この設計に関する私の回答を参照してください。この特定の戦略には意味があるかもしれません

多くの部分ビューで表示する多くのモデル

于 2012-05-26T22:55:32.520 に答える