具有多个表单的EnableClientValidation

时间:2010-10-11 13:30:32

标签: validation asp.net-mvc-2

我试图在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名称,以防我想在我的页面上使用多个表单?

感谢您的帮助,

阿尔贝托

2 个答案:

答案 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。