реализация ValidationMessageFor - PullRequest
       6

реализация ValidationMessageFor

0 голосов
/ 21 апреля 2010

Я работал над переносом приложения MVC1 на MVC2 сегодня и столкнулся с проблемой при изменении ValidationMessage на реализацию ValidationMessageFor.

Ниже приведен список выбора в моем представлении

<%=Html.DropDownListFor(model => model.SecurityQuestions[0].Question,  "Some Security question", new { @class = "form_element_select" })%>

Приведенный ниже код работает нормально, и я вижу, что сообщение о проверке пришло от моделя.

<%= Html.ValidationMessage("SecurityQuestions_0__Question")%> 

но этот не работает:

<%= Html.ValidationMessageFor(model => model.SecurityQuestions[0].Question)%>

SecurityQuestions - это общий список в моей модели

public List<SecurityQuestion> SecurityQuestions { get; set; }

Это что-то вроде ошибки в "ValidationMessageFor" или я что-то здесь упускаю?

Ранее я задавал этот вопрос на форумах asp.net .

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

Эта проблема исправлена ​​в MVC V3

1 голос
/ 21 апреля 2010

Проблема в том, что ValidationMessageFor использует только последнее имя свойства в качестве ключа сообщения проверки.

В вашем случае это означает, что:

<%= Html.ValidationMessageFor(model => model.SecurityQuestions[0].Question) %>

равно

<%= Html.ValidationMessage("Question") %>

а не то, что вы думали. К сожалению, в этом случае вам придется использовать вспомогательный тип без строгого набора, чтобы получить всю строку в порядке.

0 голосов
/ 30 сентября 2010

Вы можете добавить ошибку, которую хотите видеть в ModelState, под ключом, который генерируется ValidationMessageFor . Конечно, это взлом, но самый быстрый способ. И это не добавляет никаких уродливых "SecurityQuestions_0__Question" к вашей разметке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...