我(终于)深入研究了 JQuery,想知道如何在发布之前正确处理文本输入的验证。我有一个 ASPX 页面,它将遍历我的模型的一部分,为每个循环调用一个用户控件。我还有一个 JQuery Add 链接,它将向集合中添加一个新的(空白)用户控件。
该页面如下所示:
<h1>Create Document List</h1>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("CreateList", "Documents", FormMethod.Post, new { @class = "list", @enctype = "multipart/form-data" }))
{ %>
<%= Html.AntiForgeryToken() %>
<div id="editorRows">
<% foreach(var q in ViewData.Model.DocumentAndFileList)
Html.RenderPartial("DocEditRow", q);
%>
</div>
<br />
<%= Html.ActionLink("Add another...", "Add", null, new { id = "addItem" }) %>
<br />
<br />
<br />
<%= Html.SubmitButton("btnSave", "Save Document List")%>
<%= Html.Button("btnCancel", "Cancel", HtmlButtonType.Button, "window.location.href = '" + Html.BuildUrlFromExpressionForAreas<DocumentsController>(c => c.Index()) + "';") %>
<% } %>
</asp:Content>
用户控件如下所示:
<div class="editorRow">
<% using (Html.BeginCollectionItem("docs"))
{ %>
<%= Html.Hidden("Document.Id", (Model != null) ? Model.Id : 0)%>
<label for="Number">Document Name:</label>
<%= Html.TextBox("Number", (Model != null) ? Model.Number : "", new { @size = "50", @maxlength = "255" })%>
<%= Html.ValidationMessageFor(m => m.Number) %>
<% if (Model != null && Model.FileName != null && Model.FileName.Length > 0)
{ %>
<label>Current File:</label>
<%= Model.FileName%>
<% }
else
{ %>
<label>
File Upload:
<%= Html.FileBoxFor(m => m.HttpPostedFileBase)%>
</label>
<% } %>
<a href="#" class="deleteRow">delete</a>
<% } %>
</div>
我听从了 Scott Gu 在他博客上的一篇旧帖子上的建议。出于某种原因,我没有得到任何验证。这个项目的以前的开发人员使用了很多 JQuery,所以我现在正试图让 JQuery 验证工作,但真的不知道从哪里开始。谷歌搜索似乎给我带来了大约 500 种不同的方法来做到这一点。任何指针将不胜感激。
TIA
笔记:
我在我的页面中添加了以下内容:
<asp:Content ID="myScript" ContentPlaceHolderID="pageScript" runat="server">
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$("#LoadDocs").validate();
$.validator.unobtrusive.parse("#LoadDocs");
});
</script>
</asp:Content>
这似乎部分有效。如果我向我的集合添加几行新行,如果文本框为空,则只有第一行会弹出消息。我还添加了一个
类=“必需”
我所有的输入。
不过,我仍在努力让它 100% 工作。有什么建议么?