Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 从控制器向ASP.net MVC3中的视图发送错误消息_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

Asp.net mvc 3 从控制器向ASP.net MVC3中的视图发送错误消息

Asp.net mvc 3 从控制器向ASP.net MVC3中的视图发送错误消息,asp.net-mvc-3,model-view-controller,Asp.net Mvc 3,Model View Controller,我很好奇如何做到这一点,我想为论坛和常规视图从控制器向视图发送一条自定义错误消息(因此寻找两者的示例)。我已经看到了ModelState.AddError()我是如何控制错误消息的外观的,该错误消息能够在前端以div形式包装它 有什么想法吗 我对ASP.net非常陌生,关于ASP.net的教程对我来说似乎非常混乱。因此,我没有任何代码可以显示,因为我不确定我应该做什么。您可能需要查看ViewBag对象。如果在控制器中设置了ViewBag.ErrorMessage,则它将作为字符串在视图中可用。事

我很好奇如何做到这一点,我想为论坛和常规视图从控制器向视图发送一条自定义错误消息(因此寻找两者的示例)。我已经看到了
ModelState.AddError()
我是如何控制错误消息的外观的,该错误消息能够在前端以div形式包装它

有什么想法吗


我对ASP.net非常陌生,关于ASP.net的教程对我来说似乎非常混乱。因此,我没有任何代码可以显示,因为我不确定我应该做什么。

您可能需要查看
ViewBag
对象。如果在控制器中设置了
ViewBag.ErrorMessage
,则它将作为字符串在视图中可用。事实上,你可以随意命名,而不仅仅是错误信息

添加此项并在视图中包含逻辑,以便仅在
时显示!string.IsNullOrEmpty(ViewBag.ErrorMessage)
您应该很好

这只是多种方法中的一种
ViewBag
只是
ViewData
上的一个包装器,因此如果您被卡住了,您可能还需要查看该对象

虽然这个答案并不全面,但希望它能给你一个起点


祝你好运

我相信您希望自定义视图中的错误消息。您可以通过三种方式自定义错误消息,包括使用
ModelState.addmodeleror(“,”error message“)
添加的错误消息

选择1 使用
Html.ValidationSummary()
并通过
validation summary errors
类自定义其外观。默认情况下,VS中的默认mvc项目模板将包括该类。它的默认颜色是红色(我想)。但实际上,您可以通过更改该类来控制错误摘要的各个方面

.validation-summary-errors {
    border: 5px solid red; // thick red border
    color: #3904D9; // dark blue
    font-size: 1.5em; // quite big fonts
    font-weight: bold;
}
选择2
ValidationSummary
以无序列表(
li
)的形式输出消息。如果您的项目需要以不同的方式显示错误消息,您可以通过检查
ViewDataDictionary
在视图上执行此操作。下面的代码将在带有红色细边框的单独div中写入错误消息。该样式是内联编写的,以简化示例

@foreach (var item in ViewData.ModelState) {
    if (item.Value.Errors.Any()) {
        foreach (ModelError e in item.Value.Errors) {
            <div style="border: 1px solid red;margin-bottom:5px;">
                @e.ErrorMessage</div>
        }
    }
}

我想知道如何将错误从控制器发送到视图?是ModelState.AddError()吗?@网站你到底想做什么?使用
ModelState.AddModelError
public static class HtmlExtensions {
    public static MvcHtmlString CustomValidationSummary(this HtmlHelper helper)
    {
        var html = string.Empty;
        foreach (var item in helper.ViewData.ModelState)
        {
            if (item.Value.Errors.Any()) {
                foreach (ModelError e in item.Value.Errors) {
                    html 
                      += "<div style='border: 1px solid red;margin-bottom:5px;'>" 
                      + e.ErrorMessage 
                      + "</div>";
                }
            }
        }

        return MvcHtmlString.Create(html);
    }
}
@Html.CustomValidationSummary()