3

任何人都知道是否可以执行以下操作:

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

谢谢。

4

3 回答 3

0

根据您需要使用它的频率,您可以HttpUtility.HtmlDecode在验证消息上使用该方法。

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

更可重用但涉及更多前期时间的方法是创建您自己的返回非 html 编码字符串的 html 帮助程序(可能称为 HtmlValidationMessageFor())。

话虽如此,ValidationMessageFor 函数的返回类型是MvcHtmlString,它声明它是

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

但是我找不到一个可靠的理由来解释为什么不应该再次对其进行编码,除非它可能是一个双重编码的字符串。

于 2012-08-08T19:52:47.533 回答
0

我做了一些更多的搜索,发现了下面的 SO 帖子,该帖子解决了我的要求。我在此处添加了该答案,以防将来有人遇到此问题。我也会将此标记为答案,因为它最接近我正在寻找的最佳答案,但我会让版主决定是否需要将其作为副本关闭。

在 MVC3 中的 HTML.ValidationMessageFor 内渲染 HTML 标签

于 2012-08-16T12:56:03.773 回答
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>");
            }
       });
    });

干杯!

于 2014-08-30T05:44:27.530 回答