5

私はこのような部分的なビューを持っています(簡略化):

@model Portal.Models.LoginModel

<div class="login-container k-block">

    <section id="login-form" class="">
        @using (Html.BeginForm(actionName, controllerName, new { ReturnUrl = ViewBag.ReturnUrl }))
        {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary(true)

            <fieldset id="login-form-list-items">
                <ol>
                <li>
                    @Html.LabelFor(m => m.CardNumber)
                    @Html.TextBoxFor(m => m.CardNumber, new { @class="k-textbox"})
                    <div class="k-error-colored">
                        @Html.ValidationMessageFor(m => m.CardNumber)
                    </div>
                </li>
                <li>
                    @Html.LabelFor(m => m.Pin)
                    @Html.PasswordFor(m => m.Pin, new { @class="k-textbox"})
                    <div class="k-error-colored">
                        @Html.ValidationMessageFor(m => m.Pin)
                    </div>
                </li>
                <input id="login-input-submit" class="k-button" type="submit" value="Enter" />
            </fieldset>

</div>

そして、私のlogin見解では、この部分ビューを次のように呼び出します。

@model Portal.Models.LoginModel

@Html.Partial("_LoginFormNoRegistration", Model, new ViewDataDictionary { { "actionName", "Login" }, { "controllerName", "Account" } })

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

問題はlogin、コントローラーのメソッドが次のようなエラーを追加する場合です。

    public ActionResult Login(LoginModel model, string returnUrl)
    {
        //...

        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

検証の概要にメッセージが表示されません...理由がわかりません...何が問題なのですか? 一部の JavaScript ライブラリが見つかりませんか?

アップデート

novalidateまた、フォームが属性セットとして生成されることもわかりました。

<form action="/" method="post" novalidate="novalidate">
//...
</form>

どうしてか分かりません。

4

3 に答える 3

4

の真の引数を削除します@Html.ValidationSummary()

于 2013-07-25T15:51:36.057 に答える
0

それは私の頭の上から離れたいくつかの異なるものかもしれません. まず、必要な JavaScript が含まれていない可能性があります。これらすべてが必要なわけではありませんが、ほとんどすべてのレイアウト ビューに含まれています。

<script src="@Url.Content("~/Scripts/jquery-1.8.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

また、部分ビューのコードを表示できますか? モデルの子クラス内にある値を参照している場合、検証が少し不安定になることがあります。

最後に、これはばかげているように聞こえますが、ログイン モデルのコードを投稿していないため、検証を表示する値に適切なデータ アノテーションを使用していることを確認してください。

于 2013-07-25T14:52:16.827 に答える