【问题标题】:How do I check the Html.ValidationSummary for errors?如何检查 Html.ValidationSummary 是否有错误?
【发布时间】:2016-11-16 15:48:43
【问题描述】:

我正在编写一个 mvc web 应用程序,我正在尝试检查 Html.ValidationSummary 中是否有任何错误,以确定是否需要显示处理消息的 div。

 @if(Html.ValidationSummary() != null)
  {
    <div class="registration-val-summary">
      <label class="registration-val-label">
        Please correct the following issues with your registration:
      </label>
      @Html.ValidationSummary()
    </div>
  }

这是我收到的错误:

“@”字符后出现意外的“if”关键字。一旦进入代码,你就可以 不需要在诸如“if”之类的结构前面加上“@”。

从我在这篇文章中读到的内容:Unexpected "foreach" keyword after "@" character 这是由于我的代码中包含“Html”。我理解这个错误,但我不知道如何解决它。我想避免显示包装 ValidationSummary 的 div,除非确实有错误要显示,否则有关更正错误的消息会显示并取代我的表单。

如果 ValidationSummary 没有要显示的消息,我该如何隐藏它?

【问题讨论】:

  • 错误是因为您的@if(Html.ValidationSummary() != null) { ... } 块在另一个代码块内(可能是因为它在@using (Html.BeginForm()) 内 - 只需删除@。但代码没有意义,因为它永远不可能是@ 987654326@(该方法返回一个MvcHtmlString

标签: html css asp.net-mvc


【解决方案1】:

您收到该错误是因为您将来自 Html.ValidationSummary() 的部分视图 rasor 代码渲染到您的 if 语句中。然后编译器会看到validationSummary 呈现的任何@ 符号并失败。

一个简单的检查是否有验证错误是做@if(!ViewData.ModelState.IsValid)

@if(!ViewData.ModelState.IsValid)
  {
    <div class="registration-val-summary">
      <label class="registration-val-label">
        Please correct the following issues with your registration:
      </label>
      @Html.ValidationSummary()
    </div>
  }

【讨论】:

  • Ty 表示响应。我完全按照您的方式复制并粘贴了这段代码,我收到了相同的消息“在“@”字符之后出现意外的“if”关键字。”
  • @Html.ValidationSummary() 应该在if 块之外,否则它最初不会呈现并且不能用于客户端验证
【解决方案2】:

Html.ValidationSummary() 仅在页面出现验证错误时显示。

Html.ValidationSummary() 帮助器已经实现了您正在尝试做的事情,它返回一个 HTML div 元素,其中包含来自模型状态字典 [Source] 的所有验证错误消息的无序列表

Html.ValidationSummary() 呈现部分视图,但您可以按照此answer 自定义/扩展视图

在您的情况下,您可能希望将以下代码放在您将创建的自定义视图中

<div class="registration-val-summary">
  <label class="registration-val-label">
    Please correct the following issues with your registration:
  </label>
</div>

【讨论】:

  • @MikirKale Ty 回复。我最初确实将那个代码放在那里,但是无论是否有消息都会显示“请更正...”。
猜你喜欢
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多