0

私は(ついに)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) %>

        &nbsp;

        <% 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の異なる方法を私にもたらしているようです. 任意のポインタをいただければ幸いです。

ティア


ノート:

マイページに以下を追加しました。

<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%機能させるのに苦労しています。助言がありますか?

4

1 に答える 1