(转)ASP.NET MVC最佳实践(1)

原文地址:http://space.itpub.net/740297/viewspace-586997

 

1.创建UrlHelper类的扩展方法,生成相对路径URL

请避免将控制器、行为、或者路由名称作为字符串到处传递,创建UrlHelper的扩展方法来封装它们,例如:
1. public static class UrlHelperExtension  
2. {  
3.    public static string Home(this UrlHelper helper)  
4.    {  
5.        return helper.Content("~/");  
6.    }  
7.  
8.    public static string SignUp(this UrlHelper helper)  
9.    {  
10.        return helper.RouteUrl("Signup");  
11.    }  
12.  
13.    public static string Dashboard(this UrlHelper helper)  
14.    {  
15.        return Dashboard(helper, StoryListTab.Unread);  
16.    }  
17.  
18.    public static string Dashboard(this UrlHelper helper, StoryListTab tab)  
19.    {  
20.        return Dashboard(helper, tab, OrderBy.CreatedAtDescending, 1);  
21.    }  
22.  
23.    public static string Dashboard(this UrlHelper helper, StoryListTab tab, OrderBy orderBy, int page)  
24.    {  
25.        return helper.RouteUrl("Dashboard", new { tab = tab.ToString(), rderBy = orderBy.ToString(), page });  
26.    }  
27.  
28.    public static string Update(this UrlHelper helper)  
29.    {  
30.        return helper.RouteUrl("Update");  
31.    }  
32.  
33.    public static string Submit(this UrlHelper helper)  
34.    {  
35.        return helper.RouteUrl("Submit");  
36.    }  
37. }  

这样的话,您就可以在视图中这样来使用:
1. <a href="<%= Url.Dashboard() %>">Dashboard</a>  
2. <a href="<%= Url.Profile() %>">Profile</a>  
而不是这样:
1. <%= Html.ActionLink("Dashboard", "Dashboard", "Story") %>  
2. <a href="<%= Url.RouteUrl("Profile")%>">Profile</a>  

并且在控制器中我能这么用:
1. return Redirect(Url.Dashboard(StoryListTab.Favorite, OrderBy.CreatedAtAscending, 1))  
而不是这样:
1. return RedirectToAction("Dashboard", "Story", new { tab = StoryListTab.Favorite, rderBy = OrderBy.CreatedAtAscending, page = 1 }); 


 

posted on 2010-11-02 13:51  黑子范  阅读(323)  评论(0编辑  收藏  举报

导航