原文地址: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 });
相关阅读:
- ASP.NET MVC Unleashed (5) (geez, 2009-3-12)
- ASP.NET MVC Unleashed (5) (续) (geez, 2009-3-13)
- ASP.NET MVC Unleashed (6) (geez, 2009-3-17)
- ASP.NET MVC 1.0 正式发布 (geez, 2009-3-18)
- ASP.NET MVC Unleashed (6) (续) (geez, 2009-3-21)
- ASP.NET MVC技术专题 (朱先忠, 2009-3-27)
- ASP.NET MVC笔记 之 Action 过滤器 (iDotNetSpace, 2009-4-09)
- Asp.Net Mvc: 浅析TempData机制 (iDotNetSpace, 2009-4-09)
- ASP.NET MVC futures: MVC控件概述 (geez, 2009-4-09)
- ASP.NET MVC futures: 局部视图 (geez, 2009-4-10)