快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
(int? page)
12.   {
13.   }
14.
15.   //List Stories for a specific tag 
16.   [ControllerAction]
17.   public void Tag(string name, int? page)
18.   {
19.   }
20.
21.   //List Stories Posted by a Specific User 
22.   [ControllerAction]
23.   public void PostedBy(string name, int? page)
24.   {
25.   }
26.
27.   //Search the Stories 
28.   [ControllerAction]
29.   public void Search(string q, int? page)
30.   {
31.   }
32.
33.   //View the details of a specific story 
34.   [ControllerAction]
35.   public void Detail(int id)
36.   {
37.   }
38.
39.   //Submit a Story 
40.   [ControllerAction]
41.   public void Submit (string storyUrl, string storyTitle, int storyCategoryId,
42.            string storyDescription, string storyTags)
43.   {
44.   }
45.
46.   //Kigg the Story 
47.   [ControllerAction]
48.    public void Kigg(int storyId)
49.   {
50.   }
51.
52.   //Post a Comment 
53.   [ControllerAction]
54.   public void Comment(int storyId, string commentContent)
55.   {
56.   }
57. }

下面这些代码片段则展示了UserController里所以的行为方法:

1. public class UserController 
2. {
3.   // Login 
4.   [ControllerAction]
5.   public void Login(string userName, string password, bool rememberMe)
6.   {
7.   }
8.
9.   //Logout 
10.   [ControllerAction]
11.   public void Logout()
12.   {
13.   }
14.
15.   // Reset the current password and mail back the new password 
16.   [ControllerAction]
17.   public void SendPassword(string email)
18.   {
19.   }
20.
21.   //User Registration 
22.   [ControllerAction]
23.   public void Signup(string userName, string password, string email)
24.   {
25.   }
26. } 

注意所以的行为方法都定义为public并且使用了ControllerAction 属 性。在下一个版本的ASP.NET MVC中这个属性就不再需要了,所有定义为公共的方法将自动成为一个行为方法。

定义筛选规则

一旦Controllers的参数签名确定就应该立刻开始声明把URLs映射到Controllers的行为方法的筛选规则。前面我提到过,这些映射规则在 web.config文件中的application start事件中定义。定义筛选规则的时候你要注意,把最特殊的规则放在最上面。这个就跟try/catch块中定 义错误处理规则一样,要遵循从特殊到一般的原则。如果你打开Global.asax 文件查看,你会发现我们明确的定义了两个方法来定义这些规则 ,并且在application start事件中调用方法。这么做是因为我们不想把不同版本iis中使用的规则弄乱。在iis7中有一个很cool的特性,所有 的URLs都不需要扩展名,但是在老版本的iis中URLs都需要一个.mvc的扩展名。所以,为了同事支持这个两个版本的iis,我们就要把同一个URL 定义两遍,为新的iis定义一套没扩展名的,为旧的iis定义一套有扩展名的。在这里,我们在web.confitg文件里设置当前程序是跑在什么版本 的iis中,然后只把当前版本iis用的那套筛选规则读出来。这样做还有一个好处,那就是我们一会要讲的单元测试。下面这些代码展现了筛选 规则是如何实现的:

1. protected void Application_Start(object sender, EventArgs e)
2. {
3.   RegisterRoutes (RouteTable.Routes);
4. } public static void RegisterRoutes(RouteCollection routes)
5.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号