当我使用
时 @{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")
}
希望你理解,谢谢!
答案 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