2

我有一个 MVC 应用程序,其模型使用[Required]字段的属性。当此属性的验证失败时,我想在错误消息中显示一个超链接。

当我添加<a href="link">link</a>时,链接的文本显示为错误消息中的原样。如何在使用 ? 显示的错误消息中显示链接Html.ValidationMesssageFor(model=>model.attibute)

我正在使用 Razor 视图引擎。

我们可以在错误消息中添加任何样式以显示超链接。

4

2 回答 2

1

在解决方案的某处创建如下所示的扩展方法:

using System.Web;
namespace MvcApplication.Extensions
{
    public static class HtmlStringExtensions
    {
        public static IHtmlString Raw(this IHtmlString htmlString)
        {
            return new HtmlString(HttpUtility.HtmlDecode(htmlString.ToString()));
        }
    }
}

然后,在您的每个视图中添加以下 using 语句:

@using MvcApplication.Extensions

或者您可以将以下内容添加到您的 web.config

<pages>
      <namespaces>
        <add namespace="MvcApplication.Extensions" />
      </namespaces>
</pages>

完成这两个步骤后,您将能够通过将 ValidationMessageFor() 调用更改为:

Html.ValidationMesssageFor(model=>model.attibute).Raw()
于 2011-06-02T23:21:06.293 回答
0

验证文本在 ValidationSumary 或 ValidationFor 等之前编码...

你只需要你解码 html,然后创建一个 MvcHtmlString ...

例子:

@HttpUtility.HtmlDecode(Html.ValidationSummary().ToString()).ToMvcHtmlString()

这是我为制作 MvcHtmlString 所做的扩展:

namespace System
{
    public static class StringExtension
    {
        public static System.Web.Mvc.MvcHtmlString ToMvcHtmlString(this string value)
        {
        return System.Web.Mvc.MvcHtmlString.Create(value);
        }
    }
 }

或者,如果您打算重用它,您可以创建一个 HtmlHelper:

namespace System.Web.Mvc.Html
{
    public static class FormHelper
    {
        public static MvcHtmlString ValidationSummaryEx(this HtmlHelper htmlHelper, bool excludePropertyErrors)
        {
            var original = htmlHelper.ValidationSummary(excludePropertyErrors);
            var decoded = HttpUtility.HtmlDecode(original.ToString());
            return decoded.ToMvcHtmlString();
        }
    }
}

希望它对您或未来的观众有所帮助。注意:它适用于所有验证 Summary 和 ValidationFor ...

于 2014-07-08T17:35:55.057 回答