gpt4 book ai didi

c# - MVC 5 多个 HtmlHelper.ValidationSummary 在一页上

转载 作者:太空狗 更新时间:2023-10-30 01:01:14 25 4
gpt4 key购买 nike

我的登录页面上有两个表单:

  • 注册
  • 登录

它们被定义为:

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "");
// form controls etc...
}

@using (Html.BeginForm("Register", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "");
// form controls etc...
}

当我提交其中一个表单时出现验证错误,两个验证摘要都显示错误。

ValidationSummary 方法有多种重载 ( https://msdn.microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.validationsummary(v=vs.111).aspx ),但是没有一个可以解决这个问题。

所需的功能是:

  • 当登录表单出现验证错误时,错误会显示在登录表单的ValidationSummary中,而Register表单中的ValidationSummary为空
  • 当Register表单验证错误时,Register表单的ValidationSummary会显示错误,而Login表单的ValidationSummary为空

最佳答案

ValidationSummary 仅显示 ModelState 中的任何错误(只是模型级错误或所有错误,具体取决于您为该参数传递的内容)。然而,重要的是,这里没有多种形式之间的区别。无论哪种形式有错误,ValidationSummary 都会导致出现这些错误,如您所见。

解决此问题的唯一方法是有条件地显示 ValidationSummary。您所需要的只是一些您可以检查的后值,它只存在于其中一种形式中。这可能只是一个属性,而另一个则没有,或者您可以通过使用隐藏输入或向按钮添加名称属性来添加特定值。然后:

@if (ModelState.HasKey("MyUniqueKey"))
{
@Html.ValidationSummary(true)
}

关于c# - MVC 5 多个 HtmlHelper.ValidationSummary 在一页上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40549337/

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