首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValidationSummary不显示错误

ValidationSummary不显示错误
EN

Stack Overflow用户
提问于 2017-04-28 17:07:53
回答 2查看 1.5K关注 0票数 1

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

控制器:

代码语言:javascript
复制
[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);
}

视图:

代码语言:javascript
复制
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

我可以遍历我的代码,并看到行ModelState.AddModelError(string.Empty, ex);被执行,并且有一个有效的错误,但是标记不呈现任何错误消息。

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

代码语言:javascript
复制
<div class="validation-summary-errors text-danger">
    <ul>
        <li style="display:none"></li>
    </ul>
</div>

有人能帮我找出为什么不显示我的错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-28 17:23:06

问题在于:

代码语言:javascript
复制
catch (Exception ex)
{
    ModelState.AddModelError(string.Empty, ex);
}

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

进行以下更改将使错误在验证摘要中正确显示。

代码语言:javascript
复制
catch (Exception ex)
{
    ModelState.AddModelError(string.Empty, ex.Message);
}
票数 3
EN

Stack Overflow用户

发布于 2017-04-28 17:10:40

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

代码语言:javascript
复制
@Html.ValidationSummary(false, "", new { @class = "text-danger" })

它指定是否排除属性错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43685504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档