我试图在ASP.NET MVC(2)中使用jQuery的客户端验证。 我发现这很棒example
工作正常,但是当我尝试为表单使用自定义名称时遇到问题。
似乎 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%>
我是否有机会使用FORM名称,以防我想在我的页面上使用多个表单?
感谢您的帮助,
阿尔贝托
答案 0 :(得分:1)
我认为你的意思是id
形式?表单没有name
s。无论如何,EnableClientValidation
适用于自定义表单id
。如果您遇到问题,请查看生成的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 ...
答案 1 :(得分:0)
我已经更改了扩展方法ValidationSummaryJQuery;此方法现在接收一个对象而不是IDictionary。