Где я могу найти детали RemoteValidation для использования в HTML Helper или EditorTemplate?

В настоящее время у меня есть сайт MVC3, на котором я отображаю поля DateTime в определенном формате, а именно в верхнем регистре (DD-MON-YYYY).

Я создал для этого следующий DateTime.ascx EditorTemplate, и я добавляю настраиваемый атрибут data-datepicker, который получает какой-то пользовательский javascript, чтобы добавить Jquery UI Datepicker в поле. ‹%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<input id="<%= ViewData.ModelMetadata.PropertyName %>"
       name="<%= ViewData.ModelMetadata.PropertyName %>"
       type="text"
       value="<%= ViewData.TemplateInfo.FormattedModelValue.ToString().ToUpper() %>"
       data-datepicker="true" />

У меня проблема в том, что когда я использую EditorTemplate, я теряю все атрибуты RemoteValidation в поле ввода. Очевидно, потому что я специально их не добавляю!

Может ли кто-нибудь указать мне правильное направление, где я могу найти необходимую информацию в метаданных модели или модели, чтобы я мог создать поле ввода с помощью средства выбора даты удаленной проверки и JQueryUI?

Это то, что я получаю от EditorTemplate в настоящее время:

<input  id="MyDate"
        name="MyDate"
        type="text"
        value="19-SEP-2011"
        data-datepicker="true" />

Вот что я хочу в итоге:

<input  class="text-box single-line"
        data-val="true"
        data-val-remote="&amp;#39;Date (DD-MON-YYYY)&amp;#39; is invalid."
        data-val-remote-additionalfields="*.MyDate"
        data-val-remote-url"=/Validation/IsDateValid"
        data-val-required="A Date must be given"
        id="MyDate"
        name="MyDate"
        type="text"
        value="19-Sep-2011" 
        data-datepicker="true" />

Несколько замечаний:

  • Я готов использовать HTMLHelper, если это необходимо. Я не ограничен EditorTemplate
  • У меня есть разные действия RemoteValidation на контроллере, которые используются для разных дат. Поэтому я не могу просто жестко указать URL-адрес проверки. Мне нужно найти значение из удаленного атрибута RemoteAttribute, оформленного в поле в модели.
  • Аналогично, значение data-val-remote также требует загрузки на основе атрибута RemoteAttribute в поле модели.

У кого-нибудь есть идеи?


person Nick    schedule 29.11.2011    source источник


Ответы (1)


Вам нужно использовать помощник, чтобы получить атрибуты data-* HTML5, используемые ненавязчивым сценарием проверки:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue.ToString().ToUpper(), 
    new { data_datepicker = "true" }
) %>
person Darin Dimitrov    schedule 29.11.2011
comment
Спасибо за это. Я не думал об использовании помощника внутри шаблона. Ваше здоровье! - person Nick; 29.11.2011