MVC - Routing - 网址路由
2020-12-13 06:10
标签:style class blog c code tar 1. Routing : 路由 主要是比对通过浏览器传来的http要求与响应适当的网址给浏览器。 这段代码生成的HTML超连接: 2. 默认情况下 网址路由规则定义在 App_Start\RouteConfig.cs文档中。 1.1 所有的ASP.NET Web 应用程序的路口点都是在 HttpApplication
的Application_Start()中。 其中 RouteTable.Routes是一个公开的静态对象。用来保存所有的网址路由规则集合 (RouteCollection)。 在ASP.NET MVC 中
程序会从Global.asax中的 Application_Start() 事件加载一下方法。 RouteConfig.RegisterRoutes(RouteTable.Routes);
就是在加载网络路由地址 1.2 RegisterRoutes 中的IgnoreRoute 方法,是用来定义不要通过网址路由处理的网址,该方法的第一个参数就是设置“不要
通过网址路由处理的URL样式”。 所谓的"不要通过网址路由处理的网址"
就是:如果今天客户端浏览器传送过来的网址在这一条规则比对成功,那么就不会再通过网址路由继续比对下去。 1.3 IgnoreRoute 方法中的第一个参数
“resource”。代表RouteValue路由变量,可以取任意值 {resource}.axd代表所有的*.axd文档网址。所有的.axd文档通常都代表着其中一个HttpHandler
.就如.ashx文件一样。 1.4 IgnoreRoute
方法中的第一个参数中还有一个{*pathInfo}参数。也是一个 RouteValue路由变量。 *pathInfo代表抓取全部的意思。 完整的 地址 "{resource}.axd/{*pathInfo}" 举个例子: 若网址为 /WebResource.axd/a/b/c/d 的话, {resource}.axd
就会比对WebResource.axd。 而{*pathInfo}就会得到啊 a/b/c/d, 如果去掉* 号就只能得到
a.
@Html.ActionLink(
"关于"
,
"About"
,
"Home"
)
namespace
MvcApplication3
{
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 }
);
}
}
}
public
class
MvcApplication : System.Web.HttpApplication
{
protected
void
Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
routes.IgnoreRoute(
"{resource}.axd/{*pathInfo}"
);