Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ValidationSummary不显示错误_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

C# 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 {

我无法在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.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已经给了你解决方案。快乐编码:)我得到了同样的错误。尝试了同样的方法,但没有效果。