任何人都知道,如果它是可以做到以下几点:
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没有得到编码?
谢谢。
根据你需要多久利用这一点,你可以使用HttpUtility.HtmlDecode
的验证消息的方法。
@{HttpUtility.HtmlDecode(Html.ValidationMessageFor(x=>x.SchoolId).ToString)}
更可重复使用的,但更多的前期时间参与的方法是创建自己的HTML帮助(也许叫HtmlValidationMessageFor())返回一个非HTML编码字符串。
随着中说,对于ValidationMessageFor函数的返回类型是MvcHtmlString其中指出,这是
表示不应该再编码的HTML编码的字符串。
但我无法找到一个坚实的理由,为什么这不应该再只是它可能是一个双编码的字符串编码。
我做了一些更多的搜索和跨来到SO后下,解决怎么做我问。 我已经添加在这里,答案的情况下,任何人遇到这样的未来。 我要纪念这个作为回答,以及因为它是最接近最佳答案我一直在寻找,但我会让主持人决定是否需要将其关闭为重复。
渲染HTML标签HTML.ValidationMessageFor内的MVC3
我只是需要一个错误消息的解决方法。 因此,一个简单的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>");
}
});
});
干杯!