WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程
这篇文章结合Asp.net MVC和WF4.0实现一个简单的用户多步注册。用户注册分了四步骤。流程图如下:
第一步:填写个人信息:
第二步:填写职位信息:
第三步:填写学历信息:
第四步:填写联系信息:
第五步骤:完成
WF4.0状态机如下图:
每一步点击Next跳到下一步,点击Back回到上一步。
实现:
第一步:新建一个ASP.NET MVC Application和一个Workflow的ActivityDesignerLibrary项目,在mvc项目的Model文件夹下添加一个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 [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= "邮件格式不正确")]
18 public string Email { get; set; }
19 public int? Mobile { get; set; }
20 }
21
第二步:在Controllers中添加一个控制类,代码如下:
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上选择添加视图,如下图选择:
如此共生成五个view页面:step1.step2,step3,step4,step5,Final。
第四步:设计状态机工作流。这里只演示step1的设置,如下图:
总结:使用WF完美结合asp.net mvc实现这个功能。
(全文完)
以下为广告部分
您部署的HTTPS网站安全吗?
如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!
快速了解HTTPS网站安全情况。
安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。
安装部署SSL证书变得更方便。
SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。
让服务器远离SSL证书漏洞侵扰
TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述