从asp-validation-summary获取所有非模型错误

时间:2018-08-10 12:46:54

标签: validation razor asp.net-core

据我所知,asp-validation-summary可能是以下之一:

  • 没有
  • 仅模型
  • 全部

我想知道是否有任何可能的方法或技巧来获取所有NonModel错误,或者换句话说,是通过ModelState.AddModelError(“ custom”,“一些不是来自模型中ValidationAttribute的错误而添加的错误” );

3 个答案:

答案 0 :(得分:3)

否,因为两者之间没有有意义的区别。 ModelState是可枚举字符串的字典。没有有关特定键或值或该值中项目来自何处的信息。

“模型”错误只是添加到空字符串键中的错误,而“非模型”错误则是其他任何错误。这就是你所拥有的。

答案 1 :(得分:1)

遇到同样的问题。 我想就地显示字段错误,并在Bootstrap警报中显示服务器端错误。 为了区分显式添加的错误,我添加了前缀(在本例中为“#”):

ModelState.AddModelError("#SomeError", "Some error occured");

然后可以通过以下方式在视图/页面中过滤这些错误:

    var explicitlyAddedErrors = Model
        .Where(_ => _.Key.StartsWith("#"))
        .SelectMany(_ => _.Value.Errors)
        .ToList();

希望这对某人有用。 :)

答案 2 :(得分:0)

您可以将以下行添加到通常放置asp-validation-summary的位置

@Html.ValidationSummary(true, "", new { @class = "text-danger" })

第一个参数确定是否排除属性错误。由于我已经有了asp-validation-for =“ PROPERTY”,因此我将其保留为true;多次显示相同的错误消息毫无意义。

第二个参数是显示错误消息的标题。例如:

@Html.ValidationSummary(true, "Errors", new { @class = "text-danger" })
Errors
 * Invalid Login

“错误”仅在存在至少一个错误的情况下显示。

最后一个参数不言自明。

希望这会有所帮助! :)