7

我想使用类似以下的字符串来格式化我的验证摘要的标题:

"There are {0} errors on this page."

如何在不在控制器中执行并将其添加到 View Data 的情况下找出错误数量?

4

3 回答 3

18

我假设你的意思是从观点来看。以下内容未经测试。

ViewData.ModelState.Values.Where( v => v.Errors.Count != 0 ).Count()
于 2010-02-10T17:36:32.233 回答
2

如果您指的是 ASP.NET MVC 1.0 版本IEnumerable<RuleViolation>,您可以通过以下方式获取计数:

var errorCount = GetRuleViolations().Count();

要将该计数放入视图而不将其放入视图数据中,您可以为 ValidationSummary HtmlHelper 扩展方法创建一个重载,该方法返回包含错误计数的文本。这使您可以从扩展方法中访问错误计数。

要查看原始 ValidationSummary 扩展方法中的代码,可以使用 Reflector 对其进行反编译,或者从 Codeplex 下载 ASP.NET MVC 源代码。

请注意,验证机制在 ASP.NET MVC 2.0 中发生了很大变化。

于 2010-02-10T17:31:21.017 回答
1

您还可以使用更简单的方法

@if (ViewData.ModelState.ErrorCount > 0)
{
  ...
}
于 2020-01-17T10:53:53.397 回答