4

私が使うとき

 @{Html.RenderPartial("Login");} 

メインビュー内では @Html.ValidationSummary()機能しませんが、メインビュー内の「ログイン」からコードをコピーすると機能します。

なぜですか? また、部分ビューから検証メッセージを表示するにはどうすればよいですか?

これが部分的なビュー「ログイン」です。

@model NyNo.Models.LoginModel

@using (Html.BeginForm())
{
    <fieldset>
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        @Html.TextBoxFor(m => m.UserName, new { @placeholder = "Username" })
        @Html.ValidationMessageFor(m => m.UserName)

        @Html.PasswordFor(m => m.Password, new { @placeholder = "Password" })
        @Html.ValidationMessageFor(m => m.Password)

        @Html.CheckBoxFor(m => m.RememberMe)
        @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })

        <input type="submit" class="button" value="Log in" />
    </fieldset>
}

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

ご理解いただきありがとうございます。

4

2 に答える 2

4

残念ながら、これは機能しません。パーシャルは単なる文字列です。

RenderPartialは、文字列をView Generatorに送り返すのではなく、実際には部分的なマークアップを「書き込み」ますが、Viewを新しいモデルに再バインドしません。検証の概要を機能させるには、メインビューのモデルにバインドする必要があります。

于 2013-02-17T19:38:02.380 に答える