【问题标题】:ValidationSummary() not displaying when using RenderPartial in View在视图中使用 RenderPartial 时不显示 ValidationSummary()
【发布时间】:2013-02-17 19:30:15
【问题描述】:

当我使用时

 @{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")
}

希望您能理解,谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4


    【解决方案1】:

    很遗憾,这行不通。 Partial 只是一个字符串。

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

    【讨论】:

    • 好的,我会采纳这个答案的,谢谢!我现在的问题是我想要上面的登录代码和同一页面上的注册表单,但是我不能在视图顶部有 2 个模型引用,如下所示:模型 NyNo.Models.LoginMode 模型 NyNo.Models。 RegisterModel 这个问题有什么简单的解决方案吗?
    • @Lars 这是个好问题。您应该创建一个详细解释的新帖子。
    • @Lars 您可以通过创建包含子模型的复杂模型来解决视图中存在多个模型的问题。请参阅此答案stackoverflow.com/a/9998040/649497,了解如何执行此操作的一个很好的示例。
    【解决方案2】:

    您的问题可能与此有关(可能您没有显示 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2011-04-13
      • 2010-10-07
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多