路由介绍
ASP.NET MVC路由允许使用URLs描述性的用户行为,并更容易被用户理解。与此同时,路由可以用来隐藏其显示给最终用户的数据。例如,在不使用路由的应用程序,用户将显示的URL作为 http://myapplication/Users.aspx?id=1 这将符合所有MyApplication路径内的文件Users.aspx和发送ID为1。一般来说,我们不希望这样的显示文件名给最终的用户。
为了处理MVC的URL,ASP.NET平台使用路由系统,它可以创建想要的网址任何模式,并表示他们在一个清晰,简明的方式。在MVC每个路由包含一个特定的URL模式。这个URL模式相比传入请求的URL,如果URL与此模式匹配,它用于由路由引擎来进一步处理请求。
MVC路由URL格式
要了解MVC路由,请考虑以下地址URL:
http://servername/Products/Phones
另外,在上述的URL,Products是第一段,Phone可表示在下面的格式第二段:
{controller}/{action}
MVC框架自动评估第一段作为控制器名称,第二段作为控制器内的动作。 需要注意的是,如果控制器的名称是ProductsController,只提Prodcuts显示路由的URL。 MVC框架自动理解Controller后缀。
创建一个简单的路由
路由定义在RouteConfig.cs文件,该文件在App_Start项目文件夹内。
这个文件中的代码如下:
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
当应用程序启动时RegisterRoutes方法被Global.ascx调用。Global.ascx在Application_Start方法中调用MapRoute功能,设置默认的控制器和动作(控制器类中的方法)。
要修改上述默认映射在我们的例子中,修改下面的代码行:
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
该设置将选择的ProductsController并调用里面的Phone方法。同样,如果还有其他的方法,如ProductsController内部的Electronics方法,该网址将是:
http://servername/Products/Electronics