ASP.NET中如何使用MVC路由

发布时间:2021-08-11 15:34:31 作者:Leah
来源:亿速云 阅读:142

今天就跟大家聊聊有关ASP.NET中如何使用MVC路由,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

使用默认ASP.NET MVC路由表

当创建好一个mvc应用后,应用已经被配置好可以用asp.net routing了。ASP.NET MVC路由在两个地方被激发。

一、asp.net routing在web.config中被激活,有关route的配置有四个配置节:system.web.httpModules , system.web.httpHandlers , system.webserver.modules, the system.webserver.handlers,删除这些配置节时要小心,因为没有它们routing将不再工作。

二、更重要的是,在global.asax文件中已经创建了路由表,global.asax是一个包含了asp.net应用生命周期内事件句柄的特殊文件。路由表在Application Start 事件中被创建。

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Web.Mvc;  using System.Web.Routing;   namespace MvcApplication1  {      // 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);          }      }  }

当程序运行后,Application_Start() 方法被调用,同时调用方法内的RegisterRoutes() 方法。这个方法创建了路由表。

默认的ASP.NET MVC路由表中只含有一个叫做default的路由。这个默认路由把url拆分成三个部分分别对应controller,action和View。

当请求URL:/Home/Index/3时,下列代码执行:HomeController.Index(3)。

如果不指定controller,则默认为Home,不指定Action则默认为Index,不指定参数则默认为空。

我们将通过例子来看一下到底默认路由是怎么把URl映射到controller和action的。想象我们在地址栏中输入了如下URL:

/Home

由于默认action为Index,所以下面的方法被调用

using System.Web.Mvc;   namespace MvcApplication1.Controllers  {      [HandleError]      public class HomeController : Controller      {          public ActionResult Index(string id)          {              return View();          }      }  }

这个方法接受一个字符串类型的id参数,上面的URL执行了这个方法,传入一个空的id。

由于mvc框架引用controller actions的方式,/Home同时也会触发下列事件

using System.Web.Mvc;   namespace MvcApplication1.Controllers  {      [HandleError]      public class HomeController : Controller      {          public ActionResult Index()          {              return View();          }      }  }

这个方法不接受参数,/Home将触发这个Index(),同时/Home/Index/3也会调用这个方法,id参数将被忽略。

/Home也会与下面的方法匹配

using System.Web.Mvc;   namespace MvcApplication1.Controllers  {      [HandleError]      public class HomeController : Controller      {          public ActionResult Index(int? id)          {              return View();          }      }  }

该方法接受一个int类型的参数id,因为这个参数可以为null,该方法将被调用而不会产生任何错误。

***调用下面的方法,这里会引发一个异常

using System.Web.Mvc;   namespace MvcApplication1.Controllers  {      [HandleError]      public class HomeController : Controller      {          public ActionResult Index(int id)          {              return View();          }      }  }

因为这个参数是不可以为null的。

看完上述内容,你们对ASP.NET中如何使用MVC路由有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. ASP.NET Core MVC 配置全局路由前缀
  2. asp.net mvc的路由机制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

asp.net mvc

上一篇:基于ScheduledExecutorService的方法有哪些

下一篇:pandas.cut怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》