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

不幸的是,这行不通。Partial 只是一个字符串。

虽然 RenderPartial 实际上是“写入”部分标记而不是将字符串发送回视图生成器,但它不会将您的视图重新绑定到新模型。如果您希望验证摘要起作用,它必须绑定到主视图中的模型。

于 2013-02-17T19:38:02.380 回答
0

您的问题可能与此有关(也许您没有显示传入的 ViewData RenderPartial()):在传播 ModelState 错误时将附加的 ViewData 传递给 ASP.NET MVC 4 Partial View

我遇到了类似的问题,我用这种方式解决了:ValidationSummary inside a partial view not show errors

于 2013-07-29T23:00:19.953 回答