2010-10-11 6 views
0

Я пытаюсь использовать проверку на стороне клиента с помощью jQuery в ASP.NET MVC (2). Я нашел это отличное exampleEnableClientValidation с несколькими формами

который прекрасно работает, но у меня возникают проблемы при попытке использовать пользовательское имя для моей формы. Кажется, что методы EnableClientValidation используют имя формы по умолчанию «form0» для ввода клиентского скрипта и не поддерживают никакое другое имя.
Вот пример кода, что я пытаюсь сделать:

<%=Html.ValidationSummaryJQuery("Please fix these errors.", "id", "BPValidationID")%> 
<% Html.EnableClientValidation()%> 
<% Using (Html.BeginForm("Edit", "Home", New With {.Id = Model.Code}, FormMethod.Post, New With {.id = "EditForm"}))%> 
     <% ViewContext.FormContext.ValidationSummaryId = "BPValidationID"%> 
     <%=Html.AntiForgeryToken("AF-BP-SPED-token")%> 
    <fieldset> 
     <legend>Fields</legend> 
     <div class="editor-label"> 
      <%=Html.LabelFor(Function(m) m.Name)%> 
     </div> 
     <div class="editor-field"> 
      <%=Html.TextBoxFor(Function(m) m.Name)%> 
      <%=Html.ValidationMessageFor(Function(m) m.Name, "*")%> 
     </div> 
     <p> 
      <input type="submit" name="submitButton" value="Save" /> 
     </p> 
    </fieldset>    
    <%End Using%> 

Есть ли шанс для меня, чтобы использовать имя формы, в случае, если я хочу использовать несколько форм на моей странице?

Спасибо за любую помощь,

Альберто

ответ

0

Я изменил метод расширения ValidationSummaryJQuery; теперь этот метод получает объект вместо IDictionary.

1

Я полагаю, вы имеете в виду форму id? Формы не имеют name s. Во всяком случае, EnableClientValidation отлично работает с нестандартной формой id s. Если у вас возникла проблема, посмотрите на сгенерированный HTML/JS.

Это реальный, рабочий код:

<% Html.EnableClientValidation(); %> 
<% using (Html.BeginForm(null, 
         null, 
         new RouteValueDictionary{{ "Id", Html.ModelId() }, { "ReturnUrl", ViewData.Eval("ReturnUrl") }}, 
         FormMethod.Post, 
         new Dictionary<string, object> { { "id", "editForm" } })) { %> 
    <div id="row1"> 
     <%: Html.EditorForModel() %> 
    </div> 

Визуализированная форма:

<form action="/Snipped/Url" id="editForm" method="post"> 
    <div id="row1"> 
     <input ... 
+0

Да, я имел в виду FORM id, извините за мою ошибку. Как только я добавляю Html.EnableClientValidation(), мой FORM id становится form0. – LeftyX

+0

Не следует. Мой нет. Я обновляю ответ с помощью примера синтаксиса реального мира. –

+0

Вы правы. Он отлично работает на C#. Я не знаю, что не так в Vb.Net, но кажется, что проблемы есть. Спасибо за поддержку Крейга. – LeftyX