认识 ASP.NET 3.5 MVC 路由 理解默认路由表
来源:互联网 发布:js let const 编辑:程序博客网 时间:2024/04/27 21:37
理解默认路由表
当你创建一个新的ASP.NET MVC应用程序时,应用程序已经被配置为使用ASP.NET路由。ASP.NET路由在两个地方设置。
第一点,在你的应用程序Web配置文件(Web.config文件)中启用ASP.NET路由。在配置文件中有四个节点与路由有关:sytem.web.httpModules节,system.web.httpHandlers节,system.webserver.modules节,以及system.webserver.handlers节。特别要小心不要删除了这些节点,因为没有它们路由将不能工作。
第二点,也是更为重要的一点,在应用程序的Global.asax文件中创建了一个路由表。Global.asax文件是一个特殊的文件,它包含了作用于ASP.NET应用程序生命周期事件的事件处理程序。路由表在Application Start事件期间创建。
ASP.NET MVC应用程序的默认Global.asax文件内容如下:
namespace MvcApplication{ // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults ); } protected void Application_Start() { RegisterRoutes(RouteTable.Routes); RouteTable.Routes.RouteExistingFiles = false; RouteMonitor.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } }}
当一个MVC应用程序首次运行时,会调用Application_Start()方法。这个方法随后调用了RegisterRoutes()方法。RegisterRoutes()方法创建了路由表。
默认的路由表包含了一个路由(名叫Default)。Default路由将URL的第一部分映射到控制器名,URL的第二部分映射到控制器动作,第三个部分映射到一个叫做id的参数。
假设你在浏览器的地址栏输入了下面的URL:
/Home/Index/3
默认的路由将这个URL映射为下面的参数:
Controller = Home
Action = Index
id = 3
当你请求URL /Home/Index/3时,将会执行下面的代码:
HomeController.Index(3)
Default路由包含了所有三个参数的默认值。如果你不提供控制器,那么控制器参数默认值为Home。如果你不提供动作,动作参数默认为值Index。最后,如果你不提供id,id参数默认为空字符串。
Default路由是如何将URL映射到控制器动作的
设想你在浏览器地址栏输入了下面的URL:
/Home
由于Default路由参数的默认值,输入这个URL将会调用HomeController类的Index()方法。
using System.Web.Mvc;namespace MvcApplication1.Controllers{ [HandleError] public class HomeController : Controller { public ActionResult Index(string id) { return View(); } }}
HomeController类包含了一个叫做Index()的方法,它接受一个叫做Id的参数。URL /Home将会导致调用Index()方法,并使用空字符串作为Id参数的值。
出于MVC框架调用控制器动作的方式,URL /Home也匹配以下中HomeController类的Index()方法。
using System.Web.Mvc;namespace MvcApplication1.Controllers{ [HandleError] public class HomeController : Controller { public ActionResult Index() { return View(); } }}
以上代码的Index()方法不接受任何的参数。URL /Home将会导致调用这个Index()方法。URL /Home/Index/3也会调用这个方法(Id被忽略)。
URL /Home也会匹配以下代码HomeController类的Index()方法
using System.Web.Mvc;namespace MvcApplication1.Controllers{ [HandleError] public class HomeController : Controller { public ActionResult Index(int? id) { return View(); } }}
Index()方法拥有一个整数参数。因为这个参数是一个可空参数(可以拥有Null值),因此可以调用Index()而不会引发错误。
最后,使用URL /Home 调用以下代码中的Index()方法将会引发一个异常,因为Id参数并非一个可空参数。如果你试图调用Index()方法,那么你将会获得一个错误。
using System.Web.Mvc;namespace MvcApplication1.Controllers{ [HandleError] public class HomeController : Controller { public ActionResult Index(int id) { return View(); } }}
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- 认识 ASP.NET 3.5 MVC 路由 创建自定义路由
- 认识 ASP.NET 3.5 MVC 路由解析分析
- 认识 ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- 深入理解ASP.NET MVC路由表生成URL原理
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- Asp.Net MVC 路由
- ASP.NET MVC路由扩展:路由映射
- ASP.NET MVC路由扩展:路由映射
- asp.net mvc设置area页面为默认路由
- ASP.NET MVC 自定义路由
- ASP.NET MVC 路由(一)
- Ubuntu中的在文件中查找和替换命令
- mantis不使用邮件系统(Email)的配置
- 闲扯struts2-页面与action的配置!
- java守护线程
- 亚健康 饮食问题
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- 验证码识别浅谈
- 在VS2008环境编译dll设置
- asp.net 导出excel总结
- 话里话外:80后,那人生初始最关键的一步
- KITL--概念篇
- .net cf中图像处理经验2则
- 话里话外:按单制造企业用什么来做生产计划
- Accessing Lua from C#