Добавьте html текст в сообщение об ошибке, используя проверку на стороне клиента в mvc3 - PullRequest
2 голосов
/ 02 июня 2011

У меня есть приложение MVC с моделью, которая использует атрибут [Required] для поля. Когда проверка этого атрибута не удалась, я хотел бы показать гиперссылку в сообщении об ошибке.

Когда я добавляю <a href="link">link</a>, текст ссылки отображается как есть в сообщении об ошибке. Как я могу показать ссылку в сообщении об ошибке, которое отображается с помощью Html.ValidationMesssageFor(model=>model.attibute)?

Я использую Razor View Engine.

Можем ли мы добавить любой стиль в сообщение об ошибке, чтобы показать гиперссылку.

Ответы [ 2 ]

1 голос
/ 03 июня 2011

Создайте метод расширения, подобный следующему, где-то в вашем решении:

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>

Как только вы выполните эти два шага, вы сможете получить некодированную html-строку, как вы ищете, изменив свой вызов ValidationMessageFor () на:

Html.ValidationMesssageFor(model=>model.attibute).Raw()
0 голосов
/ 08 июля 2014

Текст проверки кодируется перед 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 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...