首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有多个路由值的ASP.NET MVC URL路由

在ASP.NET MVC中,URL路由是一种将URL地址映射到特定的控制器和操作方法的机制。通过使用路由,可以创建易于理解和描述的URL,同时也可以轻松地实现URL重构和SEO优化。在ASP.NET MVC中,可以使用多个路由值来创建更加灵活和可扩展的URL路由。

在ASP.NET MVC中,可以使用以下方式来定义具有多个路由值的URL路由:

  1. 在RouteConfig.cs文件中定义路由。

在ASP.NET MVC项目中,可以在App_Start文件夹中找到RouteConfig.cs文件,该文件包含了所有URL路由的定义。在该文件中,可以使用RouteCollection.MapRoute方法来定义具有多个路由值的URL路由,例如:

代码语言:csharp
复制
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

在上面的例子中,定义了一个名为“Default”的URL路由,该路由包含三个路由值:{controller}、{action}和{id}。其中,{controller}表示控制器名称,{action}表示操作方法名称,{id}表示可选的参数。

  1. 在控制器中使用路由值。

在控制器中,可以使用RouteData.Values属性来获取路由值。例如,在控制器中可以使用以下代码来获取路由值:

代码语言:csharp
复制
string controller = RouteData.Values["controller"].ToString();
string action = RouteData.Values["action"].ToString();
string id = RouteData.Values["id"].ToString();

在上面的例子中,使用RouteData.Values属性来获取路由值,并将其分别赋值给controller、action和id变量。

  1. 在视图中使用路由值。

在视图中,可以使用ViewContext.RouteData.Values属性来获取路由值。例如,在视图中可以使用以下代码来获取路由值:

代码语言:csharp
复制
string controller = ViewContext.RouteData.Values["controller"].ToString();
string action = ViewContext.RouteData.Values["action"].ToString();
string id = ViewContext.RouteData.Values["id"].ToString();

在上面的例子中,使用ViewContext.RouteData.Values属性来获取路由值,并将其分别赋值给controller、action和id变量。

总之,具有多个路由值的ASP.NET MVC URL路由可以提高URL的可读性和可扩展性,同时也可以让开发人员更加灵活地控制URL映射和路由行为。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Asp.Net MVC2.0 Url 路由入门

本篇文章是初识Asp.Net MVC2.0 后续介绍。此文将从Routing未开放源代码开始,还会对Asp.NetUrl重写技术做个简单介绍。...并简单介绍Asp.Net MVC2.0 Url路由技术使用。      Url路由MVC很重要核心一部分。不过它是单独于MVC项目,而且没有开源。...date=2009-1-1&id=201 这才是真正url! 现在开始讲Asp.Net MVC路由机制,首先要有个观念就是:Asp.Net MVCurl地址是表现web程序一个逻辑结构。.../action 并添加了这条路由默认new { controller = "Home", action = "Index"}。...所以我们按F5启动时候, 地址栏是:http://localhost:端口号/ 这个样子,则匹配到我们这条路由,并没有具体,就匹配了我们默认

85750

Asp.Net MVC2.0 Url 路由入门---实例篇

本篇主要讲述Routing组件作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术。     ...这是Routing组件两个重要作用! 下面我们从几个例子来讲解一下Url路由使用。 MapRoute()有6个方法可以重载,下面举5个例子相应介绍!...实例二:不使用默认Url路由规则   函数头:MapRoute( string name, string url); routes.MapRoute("没有默认路由规则", "{controller.../ 实例三:带名称空间Url路由规则       函数头:MapRoute( string name, string url, string[] namespaces);//路由名,Url规则,名称空间...:http://localhost:14039/home/index-2010-01-21 实例五:带名称空间,带约束,带默认路由规则       函数头:MapRoute( string name

38520

ASP.NET MVC 路由详解

事隔多年,其实也就一年啦,重新整理下ASP.NET MVC相关知识。继续前面的内容,来说说路由。 Route ?...这是项目中App_Star/RouteConfig.cs 中默认路由信息,上面有几个关键词: 路由规则Route:需指定路由格式,默认,处理器 路由数据RouteData:当前请求上下文匹配路由规则而到对象...Collection,一个MVC项目中,可以配置多个路由规则,按照键值对格式存储到路由集合中 路由表RouteTable:类中包含静态RouteCollection属性,完成所有路由规则全局存储...其中{controller}和{action}不能修改 defaults 默认 路由规则 重点说下路由规则,路由规则中{controller}和{action}不能修改,因为这是MVC默认字段。...因为路由规则可以方便传递和接受数据,因此在MVC中基本不适用GET方式来请求数据,一般使用路由匹配和POST提交两种方式。

1.5K20

ASP.NET路由系统:根据路由规则生成URL

前面我们已经提到过,ASP.NET 路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径匹配实现请求地址和物理地址分离;另一个则是通过注册路由规测生成一个相应URL。...和HTTP上下文封装)和用于替换定义在URL模板中变量站位符。...,会遍历整个集合每个路由对象并调用其GetVirtualPath方法,如果返回VirtualPathData不会Null则直接将其作为返回;否则(找不到匹配路由对象)返回Null。...路由对象针对GetVirtualPath方法而进行路由匹配只要求URL模板中定义变量都能被提供,而这些变量值具有三种来源,分别是路由对象定义默认变量值、指定RequestContextRouteData...ASP.NET路由系统:URL与物理文件分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

1.3K80

MVC 路由生成URL Url.Action&Html.ActionLink

在项目中URL可能会发生改变,如果我们直接指定固定URL,在后期如果改变会比较麻烦,今天我介绍学习到两种方法 Url.Action 我们从官方注释中可以看到每个参数应该传什么样,下来我们来使用这个方法...,看看生成URL是什么,下面的是在页面中代码 action操作...URL,通过查看源代码可以看到 我们可以从上面生成URL看到,单个参数时是完全匹配,多参数时溢出参数会以?...和&形式拼接在URL模式之后。...二三四参数第一与Url.Action所传参数相同,第五个参数可以设置标签属性,在标签中我设置了class和title,下来我们看看生成URL到底是什么样

10610

ASP.NET MVC编程——路由

MapRoute有多个重载方法,所有的参数含义如下: 参数名称 参数类型 注释 name string 路由名称 url string Url模式 defaults object 默认路由对象 constraints...object 一组表达式,限定URL参数值 namespaces string[] 设置一组命名空间 参数解析 1)defaults设置默认路由对象, 2)constraints:通过正则表达式来设置约束条件...不允许有两个连续: 例如 不允许:{controller}{action}/{id} 合法:{language}-{current}/{controller}/{action}/{id} 多个路由选择问题...当配置多个路由时,从上到下依次匹配,直至匹配到一个。...Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

1.7K120

ASP.NET Web API路由系统:Web Host下URL路由

如果采用Web Host方式将定义Web API寄宿于一个Web应用之中,其实最终URL路由还是通过ASP.NET本身路由系统完成,那么两个路由系统之间是如何衔接在一起呢?。...实现在HostedHttpRoute之中核心路由功能基本上是通过这个Route对象完成,所以我们才说Web Host下ASP.NET Web APIURL路由最终还是利用ASP.NET自身路由系统实现...Web API路由系统在Web Host情况下是如何利用ASP.NET自身路有系统实现URL路由ASP.NET Web API路由系统中HostedHttpRoute对象通过创建ASP.NET...路由系统HttpWebRoute进行基于URL模板路由解析,但是针对约束检验依然是利用ASP.NET Web API路由系统中HttpRouteConstraint来完成。...Web API在Web Host模式下依然是借助ASP.NET自身路由系统实现URL路由,那么意味着当我们针对ASP.NET Web API进行路由映射时候必须在ASP.NET路由系统全局路由表中添加对一个继承自抽象类

1.6K100

ASP.NET MVC 6路由技术

在我们跳转到自定义路由之前,我们必须先了解下MVC6基于MVC5基本变化。 ASP.NET MVC6将所有必要启动服务,定义和配置应用程序依赖关系放在一个Startup.cs文件中。...在ASP.NET MVC 6Routes.MapRoute中,Startup.cs文件中不在包含这个方法,取而代之是很少代码。...你同样还会注意到没有专门配置文件来处理RouteConfig.cs,WebApiConfig.cs或其他中间处理程序,这些中间处理程序是早期ASP.NET版本和MVC模式项目模板附带。...Startup.cs文件具有services.AddMvc()和services.UseMvc()方法来处理路由操作。 我们可以看看代码中UseMvc()方法实现。...我同时采用这两种方法,因为如果我们一起使用两种方法基于属性路由覆盖基于约定路由。两个路由都会覆盖由UseMvc()方法定义现有默认路由

93960

ASP.NET路由系统:路由映射

在调用MapPageRoute方法时候,我们还为定义在URL模板两个变量定义了默认以及正则表达式。...(入栈)还是针对URL生成(出栈),分别通过如上所示枚举类型RouteDirection两个枚举表示。...三、对现有文件路由 在成功注册路由情况下,如果我们按照传统方式访问一个物理文件(比如.asxp、.css或者.js等),在请求地址满足某个路由URL模板模式情况下,ASP.NET是否还是正常实施路由呢...从界面上输出结果我们不难看出,虽然请求地址完全满足我们注册路由对象URL模板模式,但是ASP.NET并没有对请求地址实施路由。...路由系统:URL与物理文件分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

2.3K90

ASP.NET MVC 6路由技术

在我们开始学习路由自定义之前,先看一下MVC6较之于MVC5(在路由配置方面)有哪些变化。...ASP.NET MVC6将所有应用程序所必要启动服务以及其所定义和配置依赖关系放在Startup.cs文件中。...Startup.cs文件取代了我们之前(在MVC5中用来)存放中间件和配置逻辑global.asax文件并实现了其所有功能。 路由活动可以通过Routes.MapRoute方法进行管理。...在ASP.NET MVC 6 中,Routes.MapRoute并不是Startup.cs一部分,这个文件现在只包含很少代码。...你还会发现在MVC6中没有专门配置文件来处理RouteConfig.cs,WebApiConfig.cs或其他中间处理程序,这些中间处理程序在早期ASP.NET版本和MVC项目模板中是附带

1.9K50

DjangoURL路由系统

现在普遍使用Django2.0版本路由系统,向下兼容1.x版本语法 from django.urls import path urlpatterns = [ path('articles...若要从URL中捕获一个,只需要在它周围放置一对圆括号(分组匹配).   3.不需要添加一个前导反斜杠(也就是写在正则最前面的那个/),因为每个URL都有.例如,应该是^articles而不是^/articles...分组命名匹配   上面的实例使用简单正则表达式分组匹配(通过圆括号) 来捕获URL并以位置参数形式形式传递给视图.   ...在更高级用法中,可以使用分组命名匹配正则表达式组来捕获URL并以关键字参数形式传递给视图.   在Python正则表达式中,分组命名正则表达式组语法(?...URLconf 不检查请求方法。换句话讲,所有的请求方法 —— 同一个URLPOST、GET、HEAD等等 —— 都将路由到相同函数。

1.4K40

ASP.NET MVC Routing Debugger路由调试工具

RouteTable.Routes); RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } ---- 测试Routing 因为一个Url...会匹配多个routing规则, 最后常常会遇到规则写错或者顺序不对问题.于是我们希望能够看到Url匹配Routing结果....其中最简单办法就是使用RouteDebug辅助类. 这个类需要单独下载dll组件, 我将此组件下载放在了博客园上: 解压缩后是一个DLL文件, 将这个DLL文件添加到项目中并且添加引用....RouteTable.Routes); RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 现在你访问任何URL...其中不仅有你所有Routing规则, 还显示了是否匹配.并且按照顺序列出. 还有识别的参数列表. 当你不想测试Routing规则时候则注释掉这一段, 即可回复跳转到View对象上.

79920

【译】ASP.NET MVC 6路由技术

fromrel=true 在我们跳转到自定义路由之前,我们将不得不从MVC5中看一下MVC6基本变化。...ASP.NET MVC6将所有必要启动服务,定义和配置应用程序依赖关系放在一个文件Startup.cs中。 Startup.cs文件替换了放置中间件和配置逻辑global.asax所有功能。...在ASP.NET MVC 6 Routes.MapRoute中,你不会找到这个方法作为Startup.cs文件一部分,它现在只包含很少代码行。...您还会注意到没有专门配置文件来处理RouteConfig.cs,WebApiConfig.cs或其他中间处理程序,这些中间处理程序是早期ASP.NET版本和MVC模式项目模板附带。...Startup.cs文件具有services.AddMvc()和services.UseMvc()方法来处理路由操作。 我们可以看看应用程序代码中UseMvc()方法的当前实现。 ​ ​

97070

ASP.NET路由系统:URL与物理文件分离

表现为请求地址与目标Controller和Action动态映射URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 中。...ASP.NET通过URL路由系统实现了请求地址与物理文件分离。...而URL路由系统则是ASP.NET一部分,是通过托管代码实现。为了让读者对ASP.NETURL路由具有一个感官认识,我们来演示一个简单实例。...对于指定了默认路由对象,在当前请求地址后续部分缺失情况下,它会采用提供默认对该地址进行填充之后再进行模式匹配。...路由系统:URL与物理文件分离 ASP.NET路由系统:路由映射 ASP.NET路由系统:根据路由规则生成URL

1.2K80
领券