0

以下のように、ネストされたモデルで構成されるフォームがあります。

foreach (var item in Model)
   {
    <h3>
        @item.StageDescription
    </h3>
    <div class="well">
        <table id="Item@(item.ID)" class="WizardOption">
            <thead>
                <tr>
                    <some headings here />
                </tr>
            </thead>
            <tbody>
                @Html.EditorFor(m => item.WizardOptions,"","WizardOptions",null)
            </tbody>
        </table>
    </div>
}

WizardOption クラスには必須フィールド呼び出し Display Value があります。

public class WizardOptionMetaData {
        [Required]
        public string DisplayValue { get; set; }
}

これは最初のテーブルでは問題なく機能します。DisplayValue フィールドを空白のままにしておくと、「DisplayValue フィールドが必要です」というエラーが表示されます。次のマークアップがレンダリングされます。

<input class="description-box" data-val="true" data-val-required="The DisplayValue field is required." id="WizardOptions_0__DisplayValue" name="WizardOptions[0].DisplayValue" type="text" value="">

ただし、最初のテーブル以降のテーブルでは、検証が適切にレンダリングされません。

<input class="description-box" id="WizardOptions_1__DisplayValue" name="WizardOptions[1].DisplayValue" type="text" value="">

どこが間違っていますか?

4

1 に答える 1

0

質問を投稿するまで見つけられなかった質問の答えを見つけました:

ASP.NET MVC 3: BeginForm がレイアウト上にあるときに目立たない検証を生成する

@{
     var originalContext = ViewContext.FormContext;
     ViewContext.FormContext = new FormContext();
} 

<!-- This will generate proper HTML5 data-* validation attributes -->
@Html.TextBoxFor(x => x.Prop1)
     @Html.ValidationMessageFor(x => x.Prop1)

     @Html.TextBoxFor(x => x.Prop2)
     @Html.ValidationMessageFor(x => x.Prop2)

@{
     ViewContext.FormContext = originalContext;
 }
于 2012-05-09T08:46:39.823 に答える