2010-11-19 3 views
1

Я использую ASP.NET MVC 3 прямо сейчас с ненавязчивой проверкой клиента jquery.Custom ValidationMessageFor Template

По умолчанию ValidationMessageFor создает тэг span с определенными наборами и атрибутами. Я бы хотел, чтобы он генерировал другой шаблон. Например, мне может понадобиться тег div с определенным фоновым изображением.

Возможно ли это вообще, или я могу просто получить сообщение об ошибке обычного текста, чтобы я мог сделать свой собственный стиль?

Благодаря

ответ

0

В MVC 2, span закодирована. Невозможно использовать div вместо ValidationMessageFor.

Вы можете получить сообщение, подобное тому, как встроенный помощник делает это:

if (modelError != null) { 
    builder.SetInnerText(GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, modelState)); 
} 

    private static string GetUserErrorMessageOrDefault(HttpContextBase httpContext, ModelError error, ModelState modelState) { 
     if (!String.IsNullOrEmpty(error.ErrorMessage)) { 
      return error.ErrorMessage; 
     } 
     if (modelState == null) { 
      return null; 
     } 

     string attemptedValue = (modelState.Value != null) ? modelState.Value.AttemptedValue : null; 
     return String.Format(CultureInfo.CurrentCulture, GetInvalidPropertyValueResource(httpContext), attemptedValue); 
    } 
+0

Я не пробовал код, приведенный выше, но это, кажется, проверка на стороне сервера. Я выполняю проверку на стороне клиента с помощью библиотеки ненавязчивой проверки jquery, которая имеет совершенно другую реализацию. – MVCQuestioner

+0

Нет, это неверно по нескольким разным подсчетам. Проверка сервера и клиента не является «совершенно другой реализацией». Оба они выходят из «ValidationMessageFor». Не стесняйтесь обращаться к исходному коду. Вы можете изменить сообщение проверки по умолчанию, например, в валидаторе jQuery, но это не будет делать 'span' ->' div', который также был частью вашего вопроса. –

+0

Справа. Я действительно хотел задать вопрос, будет ли это изменяться от span до div, когда я сделаю проверку на стороне клиента. Я предполагаю, что вы, вероятно, должны иметь совершенно другую реализацию для клиентской стороны в javascript, если, конечно, вышеприведенный код автоматически генерирует шаблоны JavaScript для ValidationMessageFor как для серверной, так и для клиентской стороны. Выполнение этого только в одном месте является неполным. Поэтому этот код, вероятно, также произойдет. – MVCQuestioner