1

データ注釈を使用してモデルを作成し、クライアント側の検証の送信をクリックすると部分ビュー フォームで作成され、フォームがサーバーにポストされます。私はここ数日からこれに頭を悩ませています。以下は、すべてのスクリプトを含めた _Layout.cshtml の head セクションです。

    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0"
    <link href="~/Images/yellowtribe3.png" rel="shortcut icon" type="image/x-icon" />
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/YellowTribes.css")" rel="stylesheet" type="text/css" />        
    <link href="@Url.Content("~/Content/menu3.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/rateit.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/shCore.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/shThemeDefault.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/prettify.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/rateit.css")" rel="stylesheet" type="text/css" />
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>


    <meta name="viewport" content="width=device-width" />

    @System.Web.Optimization.Scripts.Render("~/bundles/jquery")

    @System.Web.Optimization.Scripts.Render("~/bundles/jquery")

    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.6.4.min.js")"></script>
    <script type="text/javascript">
        $(document).bind("mobileinit", function () {
            $.mobile.ajaxEnabled = true;
            $.extend($.mobile, { ajaxFormsEnabled: true });
        });
    </script>

    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>

以下は、入力がある部分ビューコードです

<table width="100%" border="0" cellpadding="0" cellspacing="0" align="left">
    <tr>
        <td align="right" width="15%">
            <div>Name:</div> 
        </td>

        <td align="left"> 
            <div class="input200">
                <div class="input200">@Html.EditorFor(x => x.Name, new { @maxlength = "25" })</div> 
            </div> 
        </td>
    </tr>
    <tr>
        <td align="right" valign="top">
            <div>Comment:</div> 
        </td>
        <td align="left"> 
            <div>@Html.TextAreaFor(x => x.CommentText, 5, 50, null)</div> 
        </td>
    </tr>
    <tr>
        <td></td>
        <td>
            @Html.Raw(Html.GenerateCaptcha())
            @Html.ValidationMessage("recaptcha")
        </td>
    </tr>
    <tr>
        <td align="right">
        </td>
        <td align="left"> 
                <input id="ArticleID" name="ArticleID" type="hidden" value="@ViewData["ArticleID"].ToString()" />
            <input class="actionButtons" type="submit" value="Submit" onclick="validateInput();" formmethod="post"/> 
            <div id="thanksMsg" style="display:none; color:Red;">
                <b>Thank you for your comment...</b>
            </div>      
        </td>
    </tr>
    <tr>
        <td></td>
        <td>
            <br /> <br />
        </td>
    </tr>


</table>

Web ページのソースを表示すると、検証で問題ないように見えます

                <div class="input200"><input class="text-box single-line" data-val="true" data-val-required="Please enter your name" id="Name" name="Name" type="text" value="" /></div> 
            </div> 

            <div><textarea cols="50" data-val="true" data-val-required="Please enter comments" id="CommentText" name="CommentText" rows="5">

これらのフィールドを空のままにしておくと、なぜ検証されないのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

私はついに問題を見つけました。問題は、javascripts スクリプトを含めた方法にありました。から次の順序に変更しました

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>

<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
于 2013-07-26T13:32:28.743 に答える
0

モデルコードを投稿できますか?

先日、本当にばかげたことをしてしまい、しばらく立ち往生してしまいました。プロパティを正しく宣言していませんでした。set と get メソッドを使用してプロパティの代わりにパブリック文字列を作成しただけです。モデルのバインディングと検証を除いて、モデルを使用するとすべてが正常に機能しました。それは私を夢中にさせていました、多分あなたは同じ間違いをしましたか?

于 2013-07-24T17:11:49.670 に答える