WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程

这篇文章结合Asp.net MVC和WF4.0实现一个简单的用户多步注册。用户注册分了四步骤。流程图如下:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第1张图片

第一步:填写个人信息:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第2张图片

第二步:填写职位信息:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第3张图片

第三步:填写学历信息:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第4张图片

第四步:填写联系信息:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第5张图片

第五步骤:完成

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第6张图片

WF4.0状态机如下图:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第7张图片

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

实现:

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

 1  public   class  User
 2  {    // 个人信息
 3     [Required(ErrorMessage  =   " 姓名不能为空 " )]
 4     [StringLength( 20 , ErrorMessage  =   " 姓名长度不能超过20个字符 " )]
 5       public   string  Name {  get set ; }
 6       public   int ?  Age {  get set ; }
 7       // 职位信息
 8     [Required(ErrorMessage  =   " 职位不能为空 " )]
 9       public   string  Post {  get set ; }
10       public   int ?  Salary {  get set ; } 
11       // 学历信息      
12      [Required(ErrorMessage  =   " 毕业院校不能为空 " )]
13        public   string  University {  get set ; }
14        public   int ?  GraduationYear {  get set ; }
15      // 联系信息
16      [Required(ErrorMessage  =   " 邮件不能为空 " )]
17     [RegularExssion( @" ^[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 =   " 邮件格式不正确 " )]
18       public   string  Email {  get set ; }
19       public   int ?  Mobile {  get set ; }
20  }
21 

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

 1  public   class  UserController : Controller
 2      {
 3       //
 4       //  GET: /User/
 5       #region  Declarations
 6       static  WorkflowUtil wrkFlw  =   null ;
 7       string  page = " Step1 " ;
 8       public  User userObj;
 9       #endregion
10       #region  Process action method
11       public  ActionResult Process( string  nextButton,  string  backButton)
12      {
13       if  (wrkFlw  ==   null  )
14      {
15      wrkFlw  =   new  WorkflowUtil();
16      }
17       if  ((nextButton  !=   null ))
18      {
19      page  =  wrkFlw.RunWorkflow( " Next " );
20       return  View(page, userObj);
21      }
22       else   if  (backButton  !=   null )
23      {
24      ModelState.Clear();
25      page  =  wrkFlw.RunWorkflow( " Prev " );
26       return  View(page, userObj);
27      }
28       else
29       return  View(page, userObj);
30      }
31       #endregion
32       #region  Events
33       protected   override   void  OnActionExecuting(ActionExecutingContext filterContext)
34      {
35      userObj  =  (User)TempData[ " User " ];
36       if  (userObj  ==   null ) userObj  =   new  User();
37      TryUpdateModel(userObj);
38       if  (TempData[ " CurrentPage " !=   null ) page  =  TempData[ " CurrentPage " ].ToString();
39      }
40       protected   override   void  OnResultExecuted(ResultExecutedContext filterContext)
41      {
42      TempData[ " User " =  userObj;
43      TempData[ " CurrentPage " =  page;
44      }
45       #endregion
46       public  ActionResult Index()
47      {
48       return  View();
49      }
50      }

第三步:在方法Process上选择添加视图,如下图选择:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第8张图片

如此共生成五个view页面:step1.step2,step3,step4,step5,Final。

第四步:设计状态机工作流。这里只演示step1的设置,如下图:

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第9张图片

WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程_第10张图片

总结:使用WF完美结合asp.net mvc实现这个功能。

代码:/Files/zhuqil/mvc.rar


原文链接: http://www.cnblogs.com/zhuqil/archive/2010/05/02/ASP-MVC-2-wf-4.html

你可能感兴趣的:(WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程)