我无法在我的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>有人能帮我找出为什么不显示我的错误吗?
发布于 2017-04-28 17:23:06
问题在于:
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, ex);
}因为其中一个重载接受了Exception,所以我假设文本将正确地从我提供的异常中提取。但事实并非如此。
进行以下更改将使错误在验证摘要中正确显示。
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, ex.Message);
}发布于 2017-04-28 17:10:40
您可能希望将第一个参数更改为false:
@Html.ValidationSummary(false, "", new { @class = "text-danger" })它指定是否排除属性错误。
https://stackoverflow.com/questions/43685504
复制相似问题