📅  最后修改于: 2023-12-03 14:39:22.545000             🧑  作者: Mango
在ASP.NET MVC中,路由允许我们将URL映射到控制器的不同操作。这使得网站的导航和URL结构更加可读且友好。本文将介绍ASP.NET MVC路由的基础知识和常见的用法。
在ASP.NET MVC中,路由配置是在应用程序启动时完成的。这通常是在Global.asax.cs
文件中的Application_Start
方法中完成的。以下是一个基本的路由示例:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
该路由将匹配以下格式的URL:
/ControllerName/ActionName/ID
其中,ControllerName
是控制器名称,ActionName
是控制器中的操作名称,ID
是一个可选的参数。如果不提供ID,则默认为UrlParameter.Optional
。
通过这种路由配置,我们可以使用以下URL访问具有“Home”控制器的“Index”操作:
/Home/Index
当然,我们也可以定义其他路由来匹配不同的URL格式。例如:
routes.MapRoute(
name: "Product",
url: "Product/{productName}",
defaults: new { controller = "Product", action = "Details", productName = "" }
);
这将匹配以下格式的URL:
/Product/ProductName
并将请求路由到Product控制器的Details操作。可以看到,productName
是一个路由参数,可以在控制器中访问。
属性路由允许我们在控制器操作上使用属性来定义路由。例如:
[Route("users/{id:int}")]
public ActionResult Details(int id) { ... }
在这个例子中,路由将匹配以下格式的URL:
/users/123
其中,123
将与id
参数匹配,并将传递到操作中。
区域允许我们将控制器分组,以便更好地组织我们的代码和URL。例如:
context.MapRoute(
"Admin_default",
"admin/{controller}/{action}/{id}"
);
在这个例子中,Admin
是一个区域名称,该区域将为所有匹配/admin
URL的请求提供服务。这使得我们可以更好地组织和管理应用程序的不同部分。
约束允许我们对路由参数进行更精确的控制。例如:
routes.MapRoute(
"Product",
"Product/{productId}",
new { controller = "Product", action = "Details" },
new { productId = @"\d+" }
);
这将匹配/Product/123
格式的URL,并将要求productId
参数必须是数字。在该路由中,\d+
是一个正则表达式,用于指定productId
参数的约束条件。
路由是ASP.NET MVC中非常重要的一部分,它允许我们将URL映射到应用程序中的不同部分。通过理解基本的路由知识和常见用法,我们可以更好地组织和管理我们的代码和URL结构。