gpt4 book ai didi

部分 View 中的 ValidationSummary 未显示错误

转载 作者:行者123 更新时间:2023-12-04 16:46:21 24 4
gpt4 key购买 nike

我有这样的局部 View (简化):

@model Portal.Models.LoginModel

<div class="login-container k-block">

<section id="login-form" class="">
@using (Html.BeginForm(actionName, controllerName, new { ReturnUrl = ViewBag.ReturnUrl }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset id="login-form-list-items">
<ol>
<li>
@Html.LabelFor(m => m.CardNumber)
@Html.TextBoxFor(m => m.CardNumber, new { @class="k-textbox"})
<div class="k-error-colored">
@Html.ValidationMessageFor(m => m.CardNumber)
</div>
</li>
<li>
@Html.LabelFor(m => m.Pin)
@Html.PasswordFor(m => m.Pin, new { @class="k-textbox"})
<div class="k-error-colored">
@Html.ValidationMessageFor(m => m.Pin)
</div>
</li>
<input id="login-input-submit" class="k-button" type="submit" value="Enter" />
</fieldset>

</div>

而在我的 login我把这个部分 View 称为:
@model Portal.Models.LoginModel

@Html.Partial("_LoginFormNoRegistration", Model, new ViewDataDictionary { { "actionName", "Login" }, { "controllerName", "Account" } })

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

问题是当 login Controller 中的方法添加了如下错误:
    public ActionResult Login(LoginModel model, string returnUrl)
{
//...

// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}

该消息未显示在验证摘要中...我不明白为什么...可能是什么问题?缺少一些 javascript 库?

更新

我还发现生成的表单为 novalidate属性集:
<form action="/" method="post" novalidate="novalidate">
//...
</form>

我不知道为什么。

最佳答案

我发现了问题。

我在 RenderPartial 中传递了一个新的 ViewData,它覆盖了父 View 的 ViewData,所以模型状态丢失了,如下解释:Pass Additional ViewData to an ASP.NET MVC 4 Partial View While Propagating ModelState Errors .

将主 View 更改为:

@model Portal.Models.LoginModel

@{
ViewData.Add("actionName", "Login");
ViewData.Add("controllerName", "Account");
Html.RenderPartial("_LoginFormNoRegistration", Model, ViewData);
}

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

成功了!

此外,如果您想在 validationsummary 中显示模型的一般错误消息,一定要添加一个空字符串作为键的错误:
ModelState.AddModelError("error", "The user name or password provided is incorrect."); - 不起作用
ModelState.AddModelError("", "The user name or password provided is incorrect."); - 作品

关于部分 View 中的 ValidationSummary 未显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com