2

コードでエディター テンプレートを使用していますが、多くのコントロールがインデックスに基づいて名前プロパティ セットを取得していることに気付きました。

@Html.EditorFor(x => x.Emails)

Answers は EmailViewModel オブジェクトのコレクションです

レンダリングされるのは、アイテムごとに次のとおりです。

<input data-val="true" data-val-number="The field must be a number." 
      data-val-required="The Email field is required." 
      id="Emails_0__EmailId" name="Emails[0].EmailId" value="1">

name プロパティを次のように設定しようとしました。

@Html.TextBoxFor(x => x.EmailId, new { @name = "EmailAdress" })

しかし、これは効果がありません!

名前の値を有効にするために何をする必要がありますか。これを行う主な理由は、検証のためです。私の検証ルールには次のものがあります。

$("#someForm").validate({
        rules: {
            EmailAddress: {
                required: true,
                email: true
            }
        }
    });
4

1 に答える 1

3

試す

@Html.EditorFor(x => x.Emails, "string", "EmailAddress") //or EmailAdress

MSDN リファレンスには次のようなものがあります。htmlFieldName

public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression,
    string templateName,
    string htmlFieldName
)

同じ名前を持つプロパティに対してレンダリングされる HTML 入力要素の名前を明確にするために使用される文字列。

プレフィックスを編集するには、コントローラーでこれを設定できます

ViewData.TemplateInfo.HtmlFieldPrefix

またはあなたの見解で

@Html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "Foo"

もちろん、どこで使用してもこれを行う独自のヘルパーを作成できます。

于 2012-12-21T15:28:42.937 に答える