源码
/Files/zhangchao1/MVCValidationTest.rar
在contorllers内虽然简单,但有却有些不符合mvc 的设计理念,这里,我们将验证放到DLL部分
首先建立自定义的异常类
public class MyExcptions:Exception
{
//存放错误信息
List<string[]> errors = new List<string[]>();
//判断是否有错误
public bool IsValid
{
get
{
return errors.Count == 0 ? true : false;
}
}
//添加错误信息
public void AddError(string name, string message)
{
this.errors.Add(new string[] { name, message });
}
//填充ModelState
public void FillModellState(ModelStateDictionary modelstate)
{
foreach (var e in this.errors)
{
modelstate.AddModelError(e[0], e[1]);
}
}
}
然后创建一个BLL文件夹在里面创建一个UserBll类
public class UserBLL
{
public static void Edit(Models.User user, bool IsValid)
{
var e = new MyExcptions();
if (user.userName==null)
{
e.AddError("userName", "用户名不能为空");
}
//别的不变,但在这里,我除了要判断e中是否有错误外,还要判断ModelState中是否有错误
if (e.IsValid && IsValid)
{
//在这里我可以写一些代码,因为完成了验证,我就可以开始更新数据库了
}
else
{
throw e;
}
}
}
接着就在Controller中创建action
public ActionResult Validation1(Models.User user)
{
try
{
UserBLL.Edit(user, ModelState.IsValid);
}
catch (MyExcptions e)
{
e.FillModellState(ModelState);
}
if (ModelState.IsValid)
{
return View("Validation1");
}
else
{
return View(user);
}
}
生成视图后,就好了!!!
本文纯属学习记录,如有错误,请多指教(原教程http://blog.csdn.net/zhaoqiliang527/archive/2010/05/24/5620668.aspx)