MVC3 Testing ModelState, исключая ошибки свойств в представлении

Я провел поиск в Google и Stack Overflow, но не могу найти ответ на этот вопрос.

на мой взгляд имею следующее

@if (!Html.ViewData.ModelState.IsValid)
{
    @Html.ValidationSummary(true)<br />
}

Меня интересуют только ошибки модели, но тест вернет true, если будут обнаружены ошибки свойств. Как проверить только ошибки модели?

Возможно, мне нужно уточнить здесь, я хочу сделать тест, чтобы остановить запись <br />, когда есть ошибка свойства, но нет ошибки модели.


person WhiteWade    schedule 12.07.2012    source источник


Ответы (1)


если вы пойдете к источнику ValidationSummary, вы можете найти

IEnumerable<ModelState> modelStates = null;
if (excludePropertyErrors) { 
    ModelState ms;
    htmlHelper.ViewData.ModelState.TryGetValue(htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix, out ms);
    if (ms != null) {
        modelStates = new ModelState[] { ms }; 
    }
} 
else { 
    modelStates = htmlHelper.ViewData.ModelState.Values;
} 

Так что я думаю, вы могли бы сделать такой метод

public static bool ModelStateHasModelErrors(this HtmlHelper htmlHelper) {
   ModelState ms;
   htmlHelper.ViewData.ModelState.TryGetValue(htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix, out ms);
   return ms != null;
}
person Raphaël Althaus    schedule 12.07.2012
comment
Поправьте меня, если я ошибаюсь, но чтобы отображались только ошибки модели, для параметра должно быть установлено значение true. Я отредактировал исходный пост, чтобы попытаться уточнить, чего я пытаюсь достичь. - person WhiteWade; 12.07.2012
comment
@WhiteWade о, о, ты прав, извини. Ну, отредактировал, но тебе это не поможет. Я постараюсь найти лучший способ. - person Raphaël Althaus; 12.07.2012
comment
Спасибо за помощь. Практически идеально. Просто пришлось изменить this HtmlHelper helper на this HtmlHelper htmlHelper - person WhiteWade; 12.07.2012