The*_*ebs 3 model-view-controller asp.net-mvc-3
我很好奇如何做到这一点,我想为论坛和从控制器到视图的常规视图发送自定义错误消息(从而查找两者的示例).我已经看到我 ModelState.AddError()如何控制看起来能够将其包装在前端的div中的错误消息.
有任何想法吗?
我是ASP.net的新手,那里的教程对我来说似乎很混乱.所以我真的没有任何代码可以显示,因为我不确定我应该做什么.
我相信您希望自定义视图上的错误消息.您可以通过ModelState.AddModelError("", "error message")三种方式自定义错误消息,包括您添加的消息.
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;
}
Run Code Online (Sandbox Code Playgroud)
所述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>
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不想在视图上放置逻辑,那么您可以扩展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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你就像使用它一样使用它ValidationSummary:
@Html.CustomValidationSummary()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8367 次 |
| 最近记录: |