您的位置:首页 > 编程语言 > ASP

Asp.net MVC 2 自定义错误信息

2013-01-20 22:25 435 查看
自定义下错误信息,比如:添加个错误的小图标,搞错误样式。发现默认的@Html.ValidationMessage 达不到我的目标。

扩展HtmlHelper:

这个拓展类必须是非泛型的静态类

using System;
using System.Collections.Generic;
using System.Web.Mvc;
using System.Text;
using System.Collections;
namespace MvcSimpleModelBinding.Models
{
public static class HtmlHelperUtil
{
/// <summary>
/// 自定义扩展错误显示界面
/// </summary>
/// <param name="helper"></param>
/// <returns></returns>
public static MvcHtmlString ValidationImage(this HtmlHelper helper)
{
// 查找所有错误信息
StringBuilder sbErrors = new StringBuilder();
foreach (var item in helper.ViewData.ModelState.Values)
{
if (item.Errors.Count > 0)
{
for (int i = item.Errors.Count - 1; i >= 0; i--)
{
sbErrors.AppendFormat("[{0}]", item.Errors[i].ErrorMessage);
}
}
}
if (sbErrors.Length < 1)
return MvcHtmlString.Empty;
TagBuilder tag = new TagBuilder("p");
tag.AddCssClass("error");
tag.InnerHtml = string.Format("<img src=\"/content/Images/error.jpg\" height=\"16px\" width=\"16px\" />{0}", sbErrors.ToString());
return MvcHtmlString.Create(tag.ToString());
}
}
public static class MVCHelpers
{
public static string Table(this HtmlHelper helper, string name, IList items, IDictionary<string, object> attributes)
{
if (items == null || items.Count == 0 || string.IsNullOrEmpty(name))
{
return string.Empty;
}
return BuildTable(name, items, attributes);
}

private static string BuildTable(string name, IList items, IDictionary<string, object> attributes)
{
StringBuilder sb = new StringBuilder();
BuildTableHeader(sb, items[0].GetType());
foreach (var item in items)
{
BuildTableRow(sb, item);
}
TagBuilder builder = new TagBuilder("table");
builder.MergeAttributes(attributes);
builder.MergeAttribute("name", name);
builder.InnerHtml = sb.ToString();

return builder.ToString(TagRenderMode.Normal);
}

private static void BuildTableRow(StringBuilder sb, object obj)
{
Type objType = obj.GetType();
sb.AppendLine("\t<tr>");
foreach (var property in objType.GetProperties())
{
sb.AppendFormat("\t\t<td>{0}</td>\n", property.GetValue(obj, null));
}
sb.AppendLine("\t</tr>");
}

private static void BuildTableHeader(StringBuilder sb, Type p)
{
sb.AppendLine("\t<tr>");
foreach (var property in p.GetProperties())
{
sb.AppendFormat("\t\t<th>{0}</th>\n", property.Name);
}
sb.AppendLine("\t</tr>");
}
}
}

在View中调用:

<%=Html.ValidationImage()%>


http://www.soaspx.com/dotnet/asp.net/DPattern/dpattern_20110426_7558.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐