我相信您正在寻找自定义视图上的错误消息。您可以通过三种方式自定义错误消息,包括您使用ModelState.AddModelError("", "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>
}
}
}
选项 3
如果您不想在视图中添加逻辑,则可以扩展 htmlhelper(或创建自定义帮助器)。您基本上将在自定义 htmlhelper 中使用选项 2 中显示的相同逻辑。
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);
}
}
然后您就可以像使用 ValidationSummary 一样使用它:
@Html.CustomValidationSummary()