当前位置 > 首页 > Asp.net

Asp.Net MVC 3【URLs, Routing,and Areas】续

2012-7-24 23:29:00来源:Asp.net

接着前面继续学习分享我们的路由。

现在我们把Global.asax文件里的RegisterRoutes方法还原至原来的样式,具体代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Routing;using Routing.Infrastructure;namespace Routing{    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,    // 请访问 http://go.microsoft.com/?LinkId=9394801    public class MvcApplication : System.Web.HttpApplication    {        public static void RegisterGlobalFilters(GlobalFilterCollection filters)        {            filters.Add(new HandleErrorAttribute());        }        public static void RegisterRoutes(RouteCollection routes)        {            //整理RegisterRoutes            routes.MapRoute("MyRoute", "{controller}/{action}/id",                new { controller = "Home", action = "Index", id = UrlParameter.Optional });        }        protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            RegisterGlobalFilters(GlobalFilters.Filters);            RegisterRoutes(RouteTable.Routes);        }    }}

生成的URL在视图

生成传出URL最简单的方法是在视图里调用内的Html.ActionLink方法。具体代码如下:

@Html.ActionLink("About this application", "About")

ActionLink的方法的参数为文本链接和操作方法的名称,应针对链接。ActionLink的方法生成的HTML的基础上,在当前的路由架构。上面运行后的HTML代码表示如下:

<a href="/Home/About">About this application</a>

但假设我们改变路由模式通过添加一个新的路由,像下面:

     public static void RegisterRoutes(RouteCollection routes)        {            routes.MapRoute("NewRoute", "App/Do{Action}", new { controller = "Home" });            //整理RegisterRoutes            routes.MapRoute("MyRoute", "{controller}/{action}/id",                new { controller = "Home", action = "Index", id = UrlParameter.Optional });        }

然后我们得到了下面的HTML从ActionLinkhelper方法当我们呈现页面:

<a href="/App/DoAbout">About this application</a>

在这种方式生成的链接如何解决维修问题。我们能够改变我们的路由模式,即将生成自动映射这一变化。

指向其他控制器(Controller)

默认的版本的ActionLink方法,假定您想要一个动作方法为目标在同一个控制器已经造成视图呈现出来。创建一个新生成的URL,目标是不同的控制器您可以使用一个不同的重载,它允许您指定控制器的名字,具体代码如下:

@Html.ActionLink("About this application", "About",