C# ValidationSummary不显示错误
我无法在ValidationSummary中显示自定义错误。(如预期的那样,属性级错误正确显示。) 控制器:C# ValidationSummary不显示错误,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我无法在ValidationSummary中显示自定义错误。(如预期的那样,属性级错误正确显示。) 控制器: [HttpPost] public async Task<ActionResult> Contact(ContactViewModel model) { if (ModelState.IsValid) { try { Mail mail = new Mail {
[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.addmodeleror(string.Empty,ex)执行代码>,并且存在有效错误,但标记不会呈现任何错误消息
注意:虽然页面上看不到任何内容,但验证摘要的基础标记如下所示:
<div class="validation-summary-errors text-danger">
<ul>
<li style="display:none"></li>
</ul>
</div>
有人能帮我找出为什么不显示我的错误吗?您可能想将第一个参数更改为false:
@Html.ValidationSummary(false, "", new { @class = "text-danger" })
它指定是否排除属性错误。问题在于:
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, ex);
}
由于其中一个重载接受了一个异常
,因此我假设文本将正确地从我提供的异常中提取出来。但事实并非如此
进行以下更改将导致错误正确显示在验证摘要中
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, ex.Message);
}
不,我没有。这将导致任何属性级错误显示在摘要中。这不是属性级别的错误,我使用string.Empty
作为密钥就证明了这一点。对不起,我的错误!在这种情况下,可能需要更改ModelState.addmodeleror(string.Empty,ex)
使用ex.Message
?是的,我刚刚试过,效果不错!当你的评论进来的时候,我刚刚发布了这个结果。我明白了-至少你明白了。奇怪,因为AddModelState确实接受异常作为其重载之一。是的,我已向Microsoft联系人提交了一个潜在错误。请尝试使用@Html.ValidationSummary(false,“,new{@class=“text danger”})
@AdnanNiloy:不,这是为了显示属性级错误,我不希望在摘要中显示。这不是属性级错误,您可以通过我将键设置为string.Empty
看到。请注意,我确实尝试了它只是为了确认——它没有帮助。哎呀!我的错!我知道@sleeyuen已经给了你解决方案。快乐编码:)我得到了同样的错误。尝试了同样的方法,但没有效果。