在数据注解的ErrorMessage属性使用HTML(Using html in ErrorMess

2019-09-21 01:24发布

任何人都知道,如果它是可以做到以下几点:

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没有得到编码?

谢谢。

Answer 1:

根据你需要多久利用这一点,你可以使用HttpUtility.HtmlDecode的验证消息的方法。

@{HttpUtility.HtmlDecode(Html.ValidationMessageFor(x=>x.SchoolId).ToString)}

更可重复使用的,但更多的前期时间参与的方法是创建自己的HTML帮助(也许叫HtmlValidationMessageFor())返回一个非HTML编码字符串。

随着中说,对于ValidationMessageFor函数的返回类型是MvcHtmlString其中指出,这是

表示不应该再编码的HTML编码的字符串。

但我无法找到一个坚实的理由,为什么这不应该再只是它可能是一个双编码的字符串编码。



Answer 2:

我做了一些更多的搜索和跨来到SO后下,解决怎么做我问。 我已经添加在这里,答案的情况下,任何人遇到这样的未来。 我要纪念这个作为回答,以及因为它是最接近最佳答案我一直在寻找,但我会让主持人决定是否需要将其关闭为重复。

渲染HTML标签HTML.ValidationMessageFor内的MVC3



Answer 3:

我只是需要一个错误消息的解决方法。 因此,一个简单的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>");
            }
       });
    });

干杯!



文章来源: Using html in ErrorMessage property of data annotations