Я реализовал метод template.master, описанный Брэдом Уилсоном в этой публикации , но я изменил строку 31 его EditorTemplates / Template.master с:
<%= Html.ValidationMessage("", "*") %>
на:
<%= Html.ValidationMessage(ViewData.ModelMetadata.PropertyName)%>
, чтобы фактический текст проверки отображался рядом с элементами управления. Это ничего не делает .Если я перемещу ту же строку в файл object.ascx, он будет отрисован, хотя и не в нужном месте макета.Что-то с жизненным циклом метаданных не заполняется в данный момент?
ОБНОВЛЕНИЕ
У меня есть это в моем object.ascx, и оно работает.
<%= Html.Editor(prop.PropertyName)%>
<p>
<%=Html.ValidationMessage(prop.PropertyName)%>
</p>
UPDATE2
Это работает в шаблоне:
<%= Html.ValidationMessage("")%>
Я считаю, что область действия шаблона находится на уровне управления, а не на уровне модели представления,поэтому в "" он просто использует всю модель управления, а не ищет свойство из модели представления.