【问题标题】:ValidationSummary does not display errorValidationSummary 不显示错误
【发布时间】:2017-04-30 21:22:36
【问题描述】:

我的 ValidationSummary 中无法显示自定义错误。 (按预期正确显示属性级错误。)

控制器:

[HttpPost]
public async Task<ActionResult> Contact(ContactViewModel model)
{
    if (ModelState.IsValid)
    {
        try
        {
            Mail mail = new Mail
            {
                ToAddress = "user@example.com",
                Subject = model.Subject,
                Body = model.Message
            };
            if (!string.IsNullOrWhiteSpace(model.Email))
                mail.FromAddress = model.Email;

            await mail.SendAsync();

            return View("ContactConfirm");
        }
        catch (Exception ex)
        {
            ModelState.AddModelError(string.Empty, ex);
        }
    }
    return View(model);
}

查看:

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

我可以单步执行我的代码并看到ModelState.AddModelError(string.Empty, ex); 行已执行,并且存在有效错误,但标记未呈现任何错误消息。

注意:虽然页面上看不到任何内容,但验证摘要的基础标记如下:

<div class="validation-summary-errors text-danger">
    <ul>
        <li style="display:none"></li>
    </ul>
</div>

谁能帮我弄清楚为什么我的错误没有显示?

【问题讨论】:

  • 尝试使用@Html.ValidationSummary(false, "", new { @class = "text-danger" })
  • @AdnanNiloy:不,这是为了显示属性级错误,我不想在摘要中显示。这不是属性级别的错误,正如我将密钥设置为 string.Empty 所见。请注意,我确实尝试过只是为了确认 - 它没有帮助。
  • 糟糕!我的错!我看到@sleeyuen 给了你解决方案。快乐编码:)

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


【解决方案1】:

问题出在这里:

catch (Exception ex)
{
    ModelState.AddModelError(string.Empty, ex);
}

由于其中一个重载接受了Exception,我假设文本将从我提供的异常中正确提取。但事实并非如此。

进行以下更改会导致错误在验证摘要中正确显示。

catch (Exception ex)
{
    ModelState.AddModelError(string.Empty, ex.Message);
}

【讨论】:

  • 我遇到了同样的错误。尝试了相同的方法,但没有帮助。
【解决方案2】:

您可能希望将第一个参数更改为 false:

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

指定是否排除属性错误。

【讨论】:

  • 不,我没有。这将导致任何属性级别的错误显示在摘要中。这不是属性级错误,我使用 string.Empty 作为密钥这一事实证明了这一点。
  • 对不起,我的错!在这种情况下,也许将ModelState.AddModelError(string.Empty, ex); 更改为使用ex.Message
  • 是的,我刚刚尝试过,它成功了!刚刚在您发表评论时发布了该结果。
  • 我明白了——至少你明白了。很奇怪,因为 AddModelState 确实接受 Exception 作为其重载之一。
  • 是的,我已向 Microsoft 联系人提交了一个潜在错误。
猜你喜欢
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
相关资源
最近更新 更多