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

Asp.net MVC路由模糊,同一页面的两条路径

在Asp.net MVC中,路由是用于将URL映射到特定的控制器和操作方法的。在某些情况下,可能需要为同一个页面设置多个路由,这就需要使用路由模糊。

路由模糊是指在路由配置中,为同一个URL设置多个路由规则,以便根据不同的请求参数或请求类型来匹配不同的控制器和操作方法。路由模糊可以通过在路由配置中使用正则表达式或通配符来实现。

例如,假设我们有一个名为“HomeController”的控制器,其中包含一个名为“Index”的操作方法,我们可以使用以下代码来为同一个URL设置两个路由规则:

代码语言:csharp
复制
public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        name: "Route1",
        url: "home/index/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Route2",
        url: "home/index/{name}",
        defaults: new { controller = "Home", action = "Index", name = UrlParameter.Optional }
    );
}

在上面的代码中,我们定义了两个路由规则,它们都指向同一个控制器和操作方法,但是它们的URL模板不同。第一个路由规则包含一个名为“id”的参数,而第二个路由规则包含一个名为“name”的参数。

在控制器中,我们可以使用以下代码来处理这两个路由规则:

代码语言:csharp
复制
public ActionResult Index(int? id, string name)
{
    if (id.HasValue)
    {
        // Handle the first route
    }
    else if (!string.IsNullOrEmpty(name))
    {
        // Handle the second route
    }
    else
    {
        // Handle the default case
    }
}

在上面的代码中,我们使用了一个可空的整数参数“id”和一个字符串参数“name”。如果“id”有值,则表示匹配到了第一个路由规则,如果“name”有值,则表示匹配到了第二个路由规则。如果两个参数都没有值,则表示匹配到了默认路由规则。

总之,路由模糊是一种强大的路由功能,可以帮助开发人员更灵活地控制URL映射到控制器和操作方法的规则。

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

相关·内容

.NET Core 学习资料精选:入门

MVC 和Web API 直接或间接继承同一个基类 ControllerBase,提供可使用的API也一致化 b) 比如:旧ASP.NET时代,写全局filter需要针对MVC 和Web API 分别编写代码...Core 中使用多个环境(开发、预发布、生产)- 默认为 Production ASP.NET Core 动作结果(ActionResult) ASP.NET Core 中控制器操作的多路径返回类型(...Core WebAPI中,Controller标注 [ApiController] 特性,其路由只能使用[route]特性方式 ASP.NET Core MVC 构建可读性更高的ASP.NET Core...、单多Handler方式) ASP.NET Core 中 Razor 页面的IPageFilter ASP.NET Core 中 Razor 页面的路由和应用约定 ASP.NET Core Razor...配置:预编译,动态编译,混合编译 WebForm & MVC & Razor Pages [译]ASP.NET:WebForms vs MVC ASP.NET Core Razor页面 vs MVC

3.8K20

asp.net core 系列】3 视图以及视图与控制器

0.前言 在之前的几篇中,我们大概介绍了如何创建一个asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元。这一篇我们将介绍一下控制器与视图直接的关系。 1....最后一行是一个 cshtml标记引用,第一个星号表示当前项目的所有TagHelper实现都引用,后面的表示引入aps.net core mvc内置的TagHelper。...所以上面的代码表示,Views里的新建视图,默认是使用名为_Layout的视图作为布局。 当然,这个页面不只有这个作用,小伙伴们可以自己尝试下哦。...1.3 视图检索 在上一节中,我们指定了一个布局的名称。布局也是视图中的一种,但我们也只指定了名称,但没有指定路径asp.net core是如何发现这个名称的视图呢?...那么,我们可以指定哪些视图名称: 同一个控制器文件夹下的其他视图 Shared 文件夹下的视图 这两种都是不用携带路径的视图名,可以省略文件扩展名(cshtml)。

2.5K10

如何在 ASP.NET MVC 中集成 AngularJS(2)

在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩、应用程序版本自动刷新和工程构建等内容。...下面的代码示例是在一个 MVC 的 Razor 视图中执行的(通常情况下,是在 _Layout.cshtml 母版)。...MVC 捆绑 现在你可能已经看到了很多例子实现了每个内容硬编码路径的 AngularJS 示例。...下面的示例应用程序的路由表只需要分析出三条路线: 一个用于根路径'/' 一个标准路由路径,如'/:section/:tree' 包含路由参数的路由,如'/:section/:tree/:id' 我决定从...ASP.NET 捆绑中加载 JavaScript 文件,下面的路由配置代码需要包含一些 applicationConfigurationProvider 引用的代码,来用于创建保存之前的捆绑信息。

8.3K100

ASP.Net MVC开发基础学习笔记:一、走向MVC模式

综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。   ...(2)开发方式   • 服务器端控件   • 一般处理程序+Html静态+Ajax   • 一般处理程序+Html模板引擎 1.2 ASP.Net MVC的开发模式 ?   ...  我们通过调试可以知道,在MVC中所有的请求都归结到控制器下面的Action。...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置的呢?...如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}

2K30

Asp.net mvc 知多少(四)

系列导航 Asp.net mvc 知多少(一) Asp.net mvc 知多少(二) Asp.net mvc 知多少(三) Asp.net mvc 知多少(四) Asp.net mvc 知多少...什么是 ASP.NET MVC的布局(Layouts)? Ans. Layouts(布局)是用来使asp.net mvc中的views保持一致的外观体验。...该文件代码优于同一目录下的其他view代码先执行。该文件也将递归应用于子文件夹下的view(s)。...WebApiConfig.cs - 用来注册不同的WEB API 路由,也可用来设置额外的WEB API 配置选项。 Q49. ASP.NET MVC中返回/呈现一个View都有哪几种方式?...Return RedirectToRoute() - 这是告诉MVC路由表中查找指定的路由,然后重定向到路由中定义的controller/action。同样,这也要发起一个新的请求。

2.2K90

ASP.Net MVC开发基础学习笔记:一、走向MVC模式

综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。   ...(2)开发方式   • 服务器端控件   • 一般处理程序+Html静态+Ajax   • 一般处理程序+Html模板引擎 1.2 ASP.Net MVC的开发模式   (1...  我们通过调试可以知道,在MVC中所有的请求都归结到控制器下面的Action。...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置的呢?...如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}

88320

Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page

什么是Razor Page     我们都知道在Asp.Net MVC中,Razor是其一种视图引擎。...大家或许会有疑惑,我们现在Asp.Net MVC已经很完善了,为何还需要出来一种新型的框架呢?在我看来,MVC确实已经足够强大了,只是因为太强大了,却变成了它的缺点。...加上TempData特性的属性,会在你跳转路由或者页面的时候隐性的传递过去。 什么意思呢?...比如当你创建一个用户的时候,你会希望跳转回用户列表,并在用户列表提示添加成功的信息,这时候你可以通过在Message属性上加上[TempData]特性,引用下微软Docs的例子: public class...遇到的一些问题 Q:自定义routing的时候,无法支持绝对路径和相对路径 A:应该可以通过重写某个接口达到目的,稍后我会看下 Q:不支持多个handler在同一个pageModel中,比如OnGet,

2K60

Blazor 中的路由路由模板

过去的 ASP.NET Web 窗体和现代 Web 明显区别在于 Web 服务器入口是否存在路由组件。在 Web 窗体中,绝大多数 Web 终结点都是物理文件资源,直接通过其页面路径调用。...通过 ASP.NET MVC,只要请求的 URL 无法映射到物理服务器文件,路由组件就会启动。...此外,正如在 ASP.NET MVC 中发生的那样,解析 URL 时,表中的路由将从最具体到最不具体进行评估,并且搜索在首次匹配时停止。...如果熟悉 ASP.NET MVC(在很大程度上甚至是 Web 窗体),这种模型绑定模式应是老生常谈。在 ASP.NET 中,路由参数被分配给匹配的控制器方法的形参。...如果需要确保在应有参数的位置仅指定给定类型的值,则应选择路由约束。 如果熟悉任何风格的 ASP.NET MVC,那么路由约束并不是什么新鲜事。

8.3K21

.NET MVC第二章、控制器使用

.NET MVC第二章、控制器使用 目录 .NET MVC第二章、控制器使用 创建新控制器 添加MVC视图 视图访问 路由设置 母版 ---- 创建新控制器 在Controllers文件夹上点击【鼠标右键...随便写两句 重新点击执行 视图访问 访问路径:http://localhost:13604/Test/Index 访问效果如下: 路由设置 访问方式是http://域名/控制器/方法 控制器默认为...“Home”(省略后面的Controller),方法默认为“Index()” 母版 Shared/_ViewStart.cshtml的特点是“预加载” Shared/_Layout.cshtml...将子页面中定义的代码块填入到_Layout.cshtml的@ RenderSection所在位置 母版一般咱们MVC就选择上下结构就够用了,如果有单独的需求,可以将菜单的选项编辑成下拉菜单,这样功能选择就肯定够用了...因为MVC做的项目一般都是提供千人以内的企业办公需求,大型项目咱们会使用ASP.NET CORE来创建,微服务在处理并发上会好很多。

84610

ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明

Core 内置很多中间件,用户可以直接使用,将在文章后面介绍 ---- 4,使用中间件 默认创建 Asp.Net Core Mvc 程序时,会生成如下模板(Asp.Net Core 2.1) 在文章后面或详细列出所有中间件并加以说明...添加到 请求执行管道中 UseMvc(IApplicationBuilder, Action) 将 MVC 添加到请求执行管道中,并配置路由,使用示例123456app.UseMvc...;            }); UseMvcWithDefaultRoute(IApplicationBuilder) 使用默认的路由模板笔者注:在你创建Mvc应用时,就已经默认生成默认的路由模板格式...这个中间件应该放在链的末尾,以便其他提供静态文件、MVC操作等的中间件优先 UseStaticFiles(IApplicationBuilder) 为当前请求路径启用静态文件服务 UseStaticFiles...WelcomePageOptions) 添加一个欢迎页面到请求管道中,可以自己配置欢迎页面 UseWelcomePage(IApplicationBuilder, PathString) 添加一个欢迎页面到请求管道中,自定义欢迎页面的路径

3.5K20

详解ASP.NET Core 处理 404 Not Found

解决方案 在以前的ASP.NET MVC版本中,主要在 web.config 中处理404错误的。...通配路由 在先前版本的MVC,创建一个通配符路由来处理,在.NET Core中,也可以使用相同的方式。这个方式是,您有一个通配符路由,它会接收任何其它路由尚未处理的URL。...您可以指定一个固定路径来执行或使用状态代码值的占位符,如上所述。 您还可以指向静态页面(假设您已经具有StaticFileMiddleware中间件)和控制器Action。...例如,如果您正在使用上一节所示的请求限制,那么您可以返回一个解释为什么请求失败的429面。 总结 处理404面的具体问题最好用自定义视图来处理,并设置状态代码(直接或通过自定义操作结果)。...一般来说,这两种技术是在ASP.NET Core中处理非成功HTTP状态代码的首选方法。

1.9K20

金三银四面试:ASP.NET Core面试题汇总

金三银四面试准备,奉上第三弹ASP.NET Core面试题汇总。先出题大家试答一下,然后再看后面的答案。希望对大家面试有所帮助。 1.如何在controller中注入service?...所有同一个请求中的中间件、MVC控制器,等等,都会得到一个相同的服务实例。Entity Framework Context就是一个Scoped服务最好的参考例子。...异常/错误处理 当应用在开发环境中运行时:开发人员异常中间件 (UseDeveloperExceptionPage) 报告应用运行时错误。数据库错误中间件报告数据库运行时错误。...异常/错误处理 HTTP 严格传输安全协议 HTTPS 重定向 静态文件服务器 Cookie 策略实施 路由 身份验证 会话 MVC 15.application builder的use和run方法有什么区别...---->详解 16.dotnet core 管道里面的map拓展有什么作用? 可以针对不同的路径添加不同的中间件。

13210

ASP.NET MVC路由扩展:路由映射

ASP.NET路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但是对于ASP.NET MVC应用来说,请求的目标不再是一个具体的物理文件,而是定义在某个Controller...MVC路由注册与具体的物理文件无关,所以MapRoute方法中并没有一个表示文件路径的physicalFile参数。...二、 实例演示:注册路由映射与查看路由信息 ASP.NET MVC通过定义在RouteCollectionExtensions中的扩展方法MapRoute进行路由映射,为了让读者对此有一个深刻的认识,我们来进行一个简单的实例演示...的XML文件被存放在ASP.NET的临时目录下,具体的路径如下。...ASP.NET MVC路由展:路由映射 ASP.NET MVC路由扩展:链接和URL的生成

1.3K100

asp.net MVC 应用程序的生命周期

PreRequestHandlerExecute 恰好在 ASP.NET 开始执行事件处理程序(例如,某或某个 XML Web services)前发生。...PostRequestHandlerExecute 在 ASP.NET 事件处理程序(例如,某或某个 XML Web service)执行完毕时发生。...在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件。...Asp.Net Routing属于全局性的,所以它配置在全局Web.Config 中,我们可以在如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config...在看看上面的UrlRoutingModule类,里面有一个RoutCollection属性,所以UrlRoutingModule能够获取路由表中的所有规则,这里值得注意的是,路由规则的匹配是有顺序的,如果有多个规则都能够匹配

1.8K90

ASP.NET Core 2.0 : 三. 项目结构

按照标注的数字逐个做一下简单介绍, 先了解大概是干什么用的, 后面的文章会做详细的研究. 介绍的时候我会对比大家熟悉的ASP.NET Framework版本, 方便理解. ?...Nuget: 包含Microsoft.AspNetCore.All, 展开它看一下, 里面MVC、Razor、EF以及SQLLite都要, 官方这样说: 它包含了 ASP.NET Core 团队支持的所有包...切换该选项下面的配置项也会随之改变, 相当于是两个, 每页中的配置对应json中相应的节点.  ③ _Layout.cshtml 布局模板, 简单的说就是所有采用此模板的页面拥有大体一致的布局,  举个例子...; }); } 如上图所示, 默认情况下设置了两种不同状态下的错误, 指定静态文件并且设置了路由....则进行了详细的配置,如下面的bootstrap和jquery { "name": "asp.net", "private": true, "dependencies": { "bootstrap

1.8K50

asp.net MVC 应用程序的生命周期

PreRequestHandlerExecute 恰好在 ASP.NET 开始执行事件处理程序(例如,某或某个 XML Web services)前发生。...PostRequestHandlerExecute 在 ASP.NET 事件处理程序(例如,某或某个 XML Web service)执行完毕时发生。...在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件。...Asp.Net Routing属于全局性的,所以它配置在全局Web.Config 中,我们可以在如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config...在看看上面的UrlRoutingModule类,里面有一个RoutCollection属性,所以UrlRoutingModule能够获取路由表中的所有规则,这里值得注意的是,路由规则的匹配是有顺序的,如果有多个规则都能够匹配

1.7K30

asp.net MVC 应用程序的生命周期

PreRequestHandlerExecute 恰好在 ASP.NET 开始执行事件处理程序(例如,某或某个 XML Web services)前发生。...PostRequestHandlerExecute 在 ASP.NET 事件处理程序(例如,某或某个 XML Web service)执行完毕时发生。...在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件。...Asp.Net Routing属于全局性的,所以它配置在全局Web.Config 中,我们可以在如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config...在看看上面的UrlRoutingModule类,里面有一个RoutCollection属性,所以UrlRoutingModule能够获取路由表中的所有规则,这里值得注意的是,路由规则的匹配是有顺序的,如果有多个规则都能够匹配

1.3K10
领券