Ненавязчивая проверка MVC применяется только к одной вложенной модели

У меня есть форма, состоящая из вложенных моделей, как показано ниже:

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="">

Где я ошибаюсь?


person Lyno    schedule 08.05.2012    source источник


Ответы (1)


Нашел ответ на вопрос, который я не нашел, пока не опубликовал вопрос:

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;
 }
person Lyno    schedule 09.05.2012