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

时间:2015-10-10 18:13:28

标签: c# asp.net asp.net-mvc

我有一个包含两个表单的视图,每个表单都包含自己的

@Html.ValidationSummary()

加载页面时,会检查querystring参数,如果它存在,我调用:

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

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

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

2 个答案:

答案 0 :(得分:1)

根据@GSerg给出的有用信息,我以为我会分享我的决议。

因此,我不是在同一个视图中有两个表单,而是将每个表单拆分为两个独立的部分视图,并在主视图中调用每个表单...

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

每个局部视图都会包含要传递给它的模型以及一个内部带有Html.BeginForm的{​​{1}}。

然后在Controller中,设置代码以正常返回视图(在本例中为Index视图)...

Html.ValidationSummary()

然后,对于部分视图,为每个使用[HttpGet] public ActionResult Index() { return View(); } 注释的部分视图设置PartialViewResult ...

ChildActionOnly

希望这有助于某人。

答案 1 :(得分:0)

要显示特定的验证邮件,请参阅下面的代码段。 控制器:

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

查看:

@Html.ValidationMessage("Error1")

试图创造一个小提琴来获得完整的画面。 https://dotnetfiddle.net/GoMMhy