快速业务通道

使用asp.net mvc再造一个digg 第一部分

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
using (mocks.Record())
16.   {
17.     httpContext = GetHttpContext(mocks, "~/Default.aspx");
18.    }
19.
20.   using (mocks.Playback())
21.   {
22.     RouteData routeData = routes.GetRouteData(httpContext);
23.
24.     Assert.IsNotNull(routeData);
25.     Assert.AreEqual ("Story", routeData.Values["Controller"]);
26.     Assert.AreEqual("Category", routeData.Values["action"]);
27.   }
28. }
29.
30. [TestMethod]
31. public void VerifyAllCategory()
32. {
33.   IHttpContext httpContext;
34.
35.   using (mocks.Record())
36.    {
37.     httpContext = GetHttpContext(mocks, "~/Story/Category/20");
38.   }
39.
40.    using (mocks.Playback())
41.   {
42.     RouteData routeData = routes.GetRouteData(httpContext);
43.
44.     Assert.IsNotNull(routeData);
45.     Assert.AreEqual("Story", routeData.Values ["Controller"]);
46.     Assert.AreEqual("Category", routeData.Values["action"]);
47.     Assert.IsNull(routeData.Values["name"]);
48.     Assert.AreEqual("20", routeData.Values["page"]);
49.   }
50. }

实现UserController

前面我们定义了UserController的签名,现在我们就来具体实现他。UserController使用了ASP.NET Membership provider来实现登录、注 册和其他一些功能。这个controller和其他controller唯一的区别就是这个controller里所以方法都返回一个JSON数据而不是HTML输出。客户 端通过ASP.NET AJAX Framework来调用这个controller里的方法。下面这些代码是Login方法的实现:

1. [ControllerAction]
2. public void Login(string userName, string password, bool rememberMe)
3. {
4.   using (new CodeBenchmark())
5.   {
6.     JsonResult result = new JsonResult();
7.
8.     if (string.IsNullOrEmpty(userName))
9.     {
10.       result.errorMessage = "User name cannot be blank.";
11.     }
12.     else if (string.IsNullOrEmpty(password))
13.     {
14.        result.errorMessage = "Password cannot be blank.";
15.     }
16.     else if (! UserManager.ValidateUser(userName, password))
17.     {
18.       result.errorMessage = "Invalid login credentials.";
19.     }
20.     else 
21.     {
22.       //The following check is required for TDD 
23.       if (HttpContext != null)
24.       {
25.         FormsAuthentication.SetAuthCookie(userName, rememberMe);
26.       }
27.
28.       result.isSuccessful = true;
29.     }
30.
31.     RenderView("Json", result);
32.   }
33. } 

如你所见,我们在方法开头就创建了一个JsonResult对象。JsonResult是一个用来反馈controller行为是否成功的简单类,他只有两个属性 isSuccessful和errorMessage, errorMessage。如果操作不成功,就把失败原因存在errorMessage里。在结尾处,我们把结果当作一个名为 Json的共享视图里的view data返回。因为是一个共享视图,所以他可以被UserController和StoryController使用。我们把他放在了View

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号