2010-10-11 69 views
0

我想在ASP.NET MVC(2)中使用jQuery的客户端验证。 我发现这很好example多种形式的EnableClientValidation

它工作正常,但我有问题,当我尝试使用自定义名称为我的表单。 看来,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

是的,我的意思是表单ID,抱歉我的错误。只要我添加Html.EnableClientValidation()我的FORM ID变成了form0。 – LeftyX 2010-10-11 14:34:41

+0

它不应该。我的不是。我将用真实世界的工作语法示例更新答案。 – 2010-10-11 14:45:38

+0

你说得对。它在C#中正常工作。我不知道Vb.Net有什么问题,但似乎问题出在那里。感谢您的支持Craig。 – LeftyX 2010-10-11 14:56:50