如何在ASP.NET MVC项目中配置路由(含Web.config配置)
配置ASP.NET MVC路由的完整指南(针对VS2017空项目)
看起来你已经迈出了配置路由的第一步,不过你的RouteConfig.cs代码好像没写完,我来帮你补全并梳理完整的配置流程,让你的路由能正常工作。
首先,先把你的RouteConfig.cs补全成标准的MVC路由配置:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Routing; namespace WebApplicationBS_Web { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { // 忽略对.axd类资源文件的路由解析(避免干扰静态资源访问) routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 定义默认路由规则 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
接下来,你需要在项目的Global.asax.cs里注册这个路由配置(如果你的空项目没有这个文件,右键项目→添加→新建项→选择「全局应用程序类」即可):
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace WebApplicationBS_Web { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { // 若项目使用了区域功能,可保留这行;没有的话可以注释掉 AreaRegistration.RegisterAllAreas(); // 注册我们编写的路由配置 RouteConfig.RegisterRoutes(RouteTable.Routes); } } }
最后给你几个新手必知的关键点:
routes.IgnoreRoute:这条规则让ASP.NET跳过对特定静态资源的路由解析,避免不必要的性能消耗或访问错误。- 默认路由的
url模板:{controller}/{action}/{id}是MVC的标准路由结构,比如访问/Home/Index/1会匹配Home控制器的Index方法,并且把1作为id参数传入。 defaults配置:当用户直接访问项目根地址时,会默认跳转到Home控制器的Index方法,id参数设为可选意味着不传入该参数也能正常访问。
如果要测试路由是否生效,别忘了创建对应的控制器和视图:
- 右键项目→添加→控制器→选择「MVC 5控制器 - 空」,命名为
HomeController。 - 在
HomeController里添加Index方法:
public ActionResult Index() { return View(); }
- 右键
Index方法→添加视图→选择「空」模板,创建对应的视图文件。
启动项目后,就能正常访问默认路由了。如果需要自定义路由规则,只需要在RegisterRoutes方法里添加更多routes.MapRoute即可,注意自定义路由要放在默认路由之前,因为路由是按照注册顺序匹配的。
内容的提问来源于stack exchange,提问作者CrazyFirewall




