技术开发 频道

ASP.NET MVC实战:实现WF4注册Model验证

  WF4.0状态机如下图:

1
 

  每一步点击Next跳到下一步,点击Back回到上一步。

  实现:

  第一步:新建一个ASP.NET MVC Application和一个Workflow的ActivityDesignerLibrary项目,在mvc项目的Model文件夹下添加一个User。代码如下:

public class User
{  
//个人信息
    [Required(ErrorMessage
= "姓名不能为空")]
    [StringLength(
20, ErrorMessage = "姓名长度不能超过20个字符")]
    
public string Name { get; set; }
    
public int? Age { get; set; }
      
//职位信息
     [Required(ErrorMessage
= "职位不能为空")]
    
public string Post { get; set; }
    
public int? Salary { get; set; }
    
//学历信息      
     [Required(ErrorMessage
= "毕业院校不能为空")]
      
public string University { get; set; }
      
public int? GraduationYear { get; set; }
    
//联系信息
     [Required(ErrorMessage
= "邮件不能为空")]
    [RegularExpression(@
"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|" + @"0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z]" + @"[a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$", ErrorMessage= "邮件格式不正确")]
    
public string Email { get; set; }
    
public int? Mobile { get; set; }
}

 

  第二步:在Controllers中添加一个控制类,代码如下:

public class UserController : Controller
     {
    
//
    
// GET: /User/
    
#region Declarations
     static WorkflowUtil wrkFlw
= null;
    
string page="Step1";
    
public User userObj;
     #endregion
    
#region Process action method
    
public ActionResult Process(string nextButton, string backButton)
     {
    
if (wrkFlw == null )
     {
     wrkFlw
= new WorkflowUtil();
     }
    
if ((nextButton != null))
     {
     page
= wrkFlw.RunWorkflow("Next");
     return View(page, userObj);
     }
    
else if (backButton != null)
     {
     ModelState.Clear();
     page
= wrkFlw.RunWorkflow("Prev");
     return View(page, userObj);
     }
    
else
     return View(page, userObj);
     }
     #endregion
    
#region Events
     protected override void OnActionExecuting(ActionExecutingContext filterContext)
     {
     userObj
= (User)TempData["User"];
    
if (userObj == null) userObj = new User();
     TryUpdateModel(userObj);
    
if (TempData["CurrentPage"] != null) page = TempData["CurrentPage"].ToString();
     }
     protected override void OnResultExecuted(ResultExecutedContext filterContext)
     {
     TempData[
"User"] = userObj;
     TempData[
"CurrentPage"] = page;
     }
     #endregion
    
public ActionResult Index()
     {
     return View();
     }
     }

  

0
相关文章