任何人都知道是否可以执行以下操作:
public class User
{
public Guid UserID { get; set; }
[Required(ErrorMessage="A school selection is required.")]
[Range(1, int.MaxValue, ErrorMessage="School not found. Please contact support at <a href='mailto:support@mysite.com'>support@mysite.com</a>")]
public int SchoolID { get; set; }
// ... other properties
}
没有@Html.ValidationMessageFor(model => model.SchoolID)
对HTML进行编码?也许我需要为此制作一个自定义助手扩展?有没有更简单的方法?任何指导将不胜感激。如果要使用辅助扩展,我怎样才能访问辅助扩展方法中的验证规则以确保html不被编码?
感谢。
答案 0 :(得分:0)
根据您需要使用此频率的频率,您可以在验证邮件上使用HttpUtility.HtmlDecode
方法。
@{HttpUtility.HtmlDecode(Html.ValidationMessageFor(x=>x.SchoolId).ToString)}
更可重用,但更多的前期时间涉及方法是创建自己的html帮助器(可能称为HtmlValidationMessageFor()),它返回一个非html编码的字符串。
话虽如此,ValidationMessageFor函数的返回类型是MvcHtmlString,表明它是
表示不应再次编码的HTML编码字符串。
但我找不到一个可靠的理由,为什么不应该再次编码,除了它可能是一个双重编码的字符串。
答案 1 :(得分:0)
我做了一些搜索,发现下面的SO帖子解决了如何做我要问的问题。我已经在这里添加了答案,以防将来有人遇到这个问题。我将把这个标记作为答案,因为它最接近我正在寻找的最佳答案,但我会让主持人决定是否需要将其作为副本关闭。
Render HTML tags inside of HTML.ValidationMessageFor in MVC3
答案 2 :(得分:0)
我只需要一个错误消息的解决方法。所以简单的jquery绕道而行;
<script>
$(document).ready(function() {
$('.validation-summary-errors ul li').each(function(){
if($(this).html() == "School not found"){
$(this).html("School not found. Please contact support at <a href='mailto:support@mysite.com'>support@mysite.com</a>");
}
});
});
干杯!