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

我喜欢自己自定义下错误信息,比如:添加个错误的小图标,搞错误样式。发现默认的@Html.ValidationMessage 达不到我的目标。

建立Model:

public class Login_Index
{
[DisplayName(
"登录账号")]
[Required(ErrorMessage
= "登录账号不能为空")]
public string user_name { set; get; }

[DisplayName(
"登录密码")]
[Required(ErrorMessage
= "登录密码不能为空")]
public string user_password { set; get; }
}

建立HTML:

@using (Html.BeginForm())
{
<fieldset class="form">
@Html.ValidationImage()
<p>
@Html.LabelFor(m => m.user_name)
@Html.TextBoxFor(m => m.user_name)
</p>
<p>
@Html.LabelFor(m => m.user_password)
@Html.TextBoxFor(m => m.user_password)
</p>
<button type="submit" class="positive" name="Submit">
<img src="/content/images/key.png" alt="Announcement" />登录</button>
<ul id="forgottenpassword">
<li class="boldtext">|</li>
<li><a href="/Login/forgot">忘记密码怎么办?</a></li>
</ul>
</fieldset>
}

Action操作:

/// <summary>
/// 用户登录处理
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult Index(Login_Index model)
{
if (ModelState.IsValid)
return RedirectToAction("Index", "Home");
else
{
return View();
}
}

扩展HtmlHelper:

/// <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.png\" height=\"16px\" width=\"16px\" />{0}", sbErrors.ToString());
return MvcHtmlString.Create(tag.ToString());
}

显示效果:

posted @ 2011-04-26 11:20  zh-cn@live.com  阅读(2673)  评论(19编辑  收藏  举报