在View中使用RenderPartial时不显示ValidationSummary()

时间:2013-02-17 19:30:15

标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-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")
}

希望你理解,谢谢!

2 个答案:

答案 0 :(得分:4)

不幸的是,这不起作用。 Partial只是一个字符串。

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

答案 1 :(得分:0)

您的问题可能与此有关(可能您没有显示RenderPartial()中传递的ViewData):Pass Additional ViewData to an ASP.NET MVC 4 Partial View While Propagating ModelState Errors

我遇到了类似的问题,我这样解决了:ValidationSummary inside a partial view not showing errors