100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ASP.NET MVC实践系列1-UrlRouting

ASP.NET MVC实践系列1-UrlRouting

时间:2021-03-25 12:42:21

相关推荐

ASP.NET MVC实践系列1-UrlRouting

为了调研 MVC是否适合在公司项目中应用,研究了一段时间。感觉网上资料中讲实践的比较少,我在这里总结一下以备以后查用。

MVC 包含了一个强大的URL路由引擎,它允许我们自定义选择使用哪个控制器类,根据不同的参数来控制调用哪个action方法。 MVC 中有一套默认的规则来简化控制类以及action方法的调用,如果不了解这个默认规则,在使用中比较容易让人迷惑,我们结合 MVC模板来简单了解一下这些默认规则。当我们根据 MVC的模板创建一个 MVC应用时,我们可以在Global.asax文件中找到以下代码:

Code

publicstaticvoidRegisterRoutes(RouteCollectionroutes)

{

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(

"Default",//Routename

"{controller}/{action}/{id}",//URLwithparameters

new{controller="Home",action="Index",id=""}//Parameterdefaults

);

}

protectedvoidApplication_Start()

{

RegisterRoutes(RouteTable.Routes);

}

我们知道Application_Start是在第一个请求访问网站之前就被调用的,所以这个例子中的网站启动的就已经注册了一个路由网站系统中

routes.MapRoute("Default","{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" });方法的第一个参数是路由的名字,暂时用不到,假如映射多个路由的时候名字不能重复,第二个参数是Url的格式,第三个参数是个匿名对象,这个匿名对象所表达的是按照第二个参数格式所对应的默认的controller和action以及id是什么,这里我们用一个表格进一步解释一下:

观察这个表格我们可以发如果我们输入:http//localhost:4804/Home/Index/5地址,那么路由会调用HomeController的Index(5)的方法,而当输入的地址为http//localhost:4804时,路由会根据匿名对象new { controller = "Home", action = "Index", id = "" }中的默认值来选取相应的Controller和action。

当我们创建第一个 MVC应用时我们可以发现一个default.aspx,这个文件其实是用来在网站部署时简化IIS部署的,查看default.aspx.cs文件我们可以看到以下代码:

Code

publicvoidPage_Load(objectsender,System.EventArgse)

{

//ChangethecurrentpathsothattheRoutinghandlercancorrectlyinterpret

//therequest,thenrestoretheoriginalpathsothattheOutputCachemodule

//cancorrectlyprocesstheresponse(ifcachingisenabled).

stringoriginalPath=Request.Path;

HttpContext.Current.RewritePath(Request.ApplicationPath,false);

IHttpHandlerhttpHandler=newMvcHttpHandler();

httpHandler.ProcessRequest(HttpContext.Current);

HttpContext.Current.RewritePath(originalPath,false);

}

仔细阅读这段代码你会发现,其实它的作用就是将地址转换到根上,也就是将http//localhost:4804/default.aspx转换成http//localhost:4804/,那么路由就可以根据url来选择相应的Controller和action了。

本文转自 你听海是不是在笑 博客园博客,原文链接:/nuaalfm/archive//10/26/1589802.html,如需转载请自行联系原作者

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。