ASP.NET MVC Routing允许使用描述用户操作的URL,并且用户更容易理解.同时,路由可以用于隐藏不打算向最终用户显示的数据.
例如,在不使用路由的应用程序中,用户会将URL显示为http://myapplication/Users.aspx?id = 1,它对应于myapplication路径中的Users.aspx文件,并将ID发送为1,一般情况下,我们不希望将这些文件名显示给我们的最终版本用户.
为了处理MVC URL,ASP.NET平台使用路由系统,它允许您创建所需的任何URL模式,并以清晰简洁的方式表达它们. MVC中的每个路由都包含特定的URL模式.此URL模式与传入请求URL进行比较,如果URL与此模式匹配,路由引擎将使用它来进一步处理请求.
MVC路由URL格式
要了解MVC路由,请考虑以下URL :
http://servername/Products/Phones
在上面的URL中,Products是第一个段,Phone是第二个段,可以用以下格式表示 :
{controller}/{action}
MVC框架自动将第一个段视为控制器名称和第二段作为该控制器内的一项行动.
注意 : 如果Controller的名称是ProductsController,则只需在路由URL中提及Products. MVC框架自动理解Controller后缀.
创建简单路由
路由在App_Start下的RouteConfig.cs文件中定义项目文件夹.
您将看到以下代码在这个文件里面 :
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 } ); } }
当应用程序启动时,Global.ascx会调用此RegisterRoutes方法. Global.ascx下的Application_Start方法调用此MapRoute函数,该函数设置默认的Controller及其操作(Controller类中的方法).
要根据我们的示例修改上述默认映射,请更改以下代码行 :
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
此设置将选择ProductsController并在其中调用Phone方法.同样,如果你有另一种方法,比如ProductsController里面的Electronics,那么它的URL就是 :
http://servername/Products/Electronics