Помощник ValidationSummary по умолчанию возвращает значение в кодировке HTML; если вы хотите разрешить использование HTML внутри ValidationSummary, вам нужно создать свою собственную версию. Взгляните на исходный код MVC 2 RTM , чтобы начать. ValidationSummary HtmlHelper определен в классе System.Web.Mvc.Html.ValidationExtensions (находится в mvc2-rtm-sources \ src \ SystemWebMvc \ Mvc \ Html).
Взглянув на исходный код в ValidationExtensions.cs, вы увидите, что listItem.SetInnerText(errorText)
является виновником:
if (modelStates != null) {
foreach (ModelState modelState in modelStates) {
foreach (ModelError modelError in modelState.Errors) {
string errorText = GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, null /* modelState */);
if (!String.IsNullOrEmpty(errorText)) {
TagBuilder listItem = new TagBuilder("li");
listItem.SetInnerText(errorText);
htmlSummary.AppendLine(listItem.ToString(TagRenderMode.Normal));
}
}
}
}
Изменение кода на listItem.InnerHtml = errorText
приведет к желаемому поведению; однако, это не будет так просто, потому что метод ValidationSummary вызывает некоторые внутренние методы System.Web.Mvc, которые вам придется вручную реализовать в вашей настроенной версии для воспроизведения исходного поведения.