繁体   English   中英

ASP.Net MVC使用具有多个ValidationSummary的AddModelError进行查询字符串验证

[英]ASP.Net MVC Using AddModelError with multiple ValidationSummary for querystring validation

我有一个包含两种形式的视图

@Html.ValidationSummary()

加载页面后,将检查querystring参数,如果存在,则调用:

ModelState.AddModelError("", "Querystring error");

但是,即使我在表单模型中指定属性,这也会导致错误消息同时出现在@Html.ValidationSummary()中。

我有一个解决方法,就是在模型的表单中有一个单独的错误消息属性,并填充该错误消息属性,然后显示它是否存在于标签中,但是想知道是否可以指定一个单独的@Html.ValidationSummary()在表格中允许我使用ModelState.AddModelError吗?

遵循@GSerg提供的有用信息后,我认为我会分享自己的解决方案。

因此,我将每个表单分成两个单独的局部视图,而不是在同一个视图中包含两个表单,然后从主视图中调用每个表单...

@Html.Action("_RequestPartial")
@Html.Action("_LoginPartial")

每个局部视图都将包含要传递给它的模型,以及一个内部带有Html.ValidationSummary()Html.BeginForm

然后在Controller中,设置代码以正常返回视图(在这种情况下为Index视图)...

[HttpGet]
public ActionResult Index()
{
     return View();
}

然后对于部分视图,为每个带有ChildActionOnly注释的部分视图设置PartialViewResult

[ChildActionOnly]
public PartialViewResult _RequestPartial()
{
      ... code that populates model you want to pass ...

      return PartialView(model);
}

[ChildActionOnly]
public PartialViewResult _LoginPartial()
{
      ... code that populates model you want to pass ...

      return PartialView(model);
}

希望这对某人有帮助。

要显示特定的验证消息,请参见下面的代码段。 控制器:

[HttpGet]
        public ActionResult Index()
        {
            ModelState.AddModelError("Error1", "Querystring error");
            return View(new SampleViewModel());
        }

查看:

@Html.ValidationMessage("Error1")

只是试图创建一个小提琴以获得完整的图片。 https://dotnetfiddle.net/GoMMhy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM