我正在尝试在包含链接的 MVC3 中输出验证消息。
我正在输出这样的错误消息占位符
@Html.ValidationMessageFor(model => model.Email)
问题是,错误消息是 html 转义的,这在大多数情况下都很好,但我希望中间有一个链接。
<span class="field-validation-error" data-valmsg-for="Email" data-valmsg-replace="true">This e-mail address is already registed. <a href="%url_token%">Click here to reset.</a></span>
我该如何防止这种情况发生?
这可行,但不是解决方案,而是临时解决方法。
@{
string s = Html.ValidationMessageFor(model => model.Email).ToString();
}
@Html.Raw(HttpUtility.HtmlDecode(s))
最佳答案
用反射器查看代码似乎没有方法,更完整的重载是:
public static MvcHtmlString ValidationMessageFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
string validationMessage,
object htmlAttributes)
{
return htmlHelper.ValidationMessageFor<TModel, TProperty>(expression, validationMessage, ((IDictionary<string, object>) HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)));
}
但是,您可以做的是创建一个扩展方法,该方法可以根据需要返回字符串,如下所示:
public static class ValidationExtender
{
public static IHtmlString HtmlValidationMessageFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression)
{
return MvcHtmlString.Create(htmlHelper.ValidationMessageFor(expression).ToHtmlString());
}
}
您可以使用
MvcHtmlString
.见 MvcHtmlString.Create()
.它将输出html而不转义。
关于asp.net-mvc - 如何防止 MVC3 html 转义我的验证消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385402/