📅  最后修改于: 2020-10-21 04:50:42             🧑  作者: Mango
ASP.NET MVC路由允许使用描述用户操作的URL,并且用户更易于理解。同时,“路由”可以用来隐藏不希望显示给最终用户的数据。
例如,在不使用路由的应用程序中,将向用户显示URL为http://myapplication/Users.aspx?id = 1,该URL对应于myapplication路径内的文件Users.aspx,并将ID发送为1 ,通常,我们不希望向最终用户显示此类文件名。
为了处理MVC URL,ASP.NET平台使用路由系统,该系统使您可以创建所需的任何URL模式,并以简洁明了的方式进行表达。 MVC中的每个路由都包含一个特定的URL模式。将该URL模式与传入请求URL进行比较,如果URL与该模式匹配,则路由引擎将其用于进一步处理请求。
要了解MVC路由,请考虑以下URL-
http://servername/Products/Phones
在上述网址中,产品是第一个细分,电话是第二个细分,可以采用以下格式表示-
{controller}/{action}
MVC框架自动将第一段视为控制器名称,将第二段视为该控制器内部的动作之一。
注-如果控制器的名称为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中使用其他方法(例如电子产品),则其URL为-
http:// servername / Products / Electronics