Где я могу найти подробности RemoteValidation для использования в HTML Helper или EditorTemplate? - PullRequest
0 голосов
/ 29 ноября 2011

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

Для этого я создал следующий шаблон DateTime.ascx EditorTemplate, и я добавляю пользовательский атрибут data-datepicker, который выбирается некоторым пользовательским javascript для добавления DateUpicker пользовательского интерфейса Jquery в поле. <% @ 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 в поле модели.

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

1 Ответ

1 голос
/ 29 ноября 2011

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

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue.ToString().ToUpper(), 
    new { data_datepicker = "true" }
) %>
...