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

ASP.NET核心3.1 :如何路由到子文件夹中的控制器

在ASP.NET Core 3.1中,路由到子文件夹中的控制器可以通过配置路由来实现。以下是实现这一功能的基础概念、优势、类型、应用场景以及解决问题的方法。

基础概念

ASP.NET Core的路由系统允许你定义URL模式与控制器和动作方法的映射关系。默认情况下,路由配置在Startup.cs文件中的Configure方法中进行。

优势

  1. 灵活性:可以根据需要定义复杂的路由规则。
  2. 可维护性:将不同功能的控制器放在不同的文件夹中,使代码结构更清晰。
  3. 安全性:可以通过路由配置来限制某些路径的访问。

类型

  1. 常规路由:基于URL路径的简单映射。
  2. 属性路由:使用控制器和动作方法上的属性来定义路由。
  3. 自定义路由:可以创建自定义的路由处理器。

应用场景

假设你有一个项目结构如下:

代码语言:txt
复制
Controllers
├── HomeController.cs
└── Admin
    └── DashboardController.cs

你希望访问/admin/dashboard时路由到DashboardController

解决方法

1. 配置常规路由

Startup.cs中配置路由:

代码语言:txt
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapControllerRoute(
            name: "admin",
            pattern: "admin/{controller=Dashboard}/{action=Index}/{id?}");
    });
}

2. 使用属性路由

DashboardController中使用属性路由:

代码语言:txt
复制
namespace YourNamespace.Controllers.Admin
{
    [Route("admin/[controller]")]
    public class DashboardController : Controller
    {
        [HttpGet]
        public IActionResult Index()
        {
            return View();
        }
    }
}

示例代码

常规路由配置

代码语言:txt
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapControllerRoute(
            name: "admin",
            pattern: "admin/{controller=Dashboard}/{action=Index}/{id?}");
    });
}

属性路由配置

代码语言:txt
复制
namespace YourNamespace.Controllers.Admin
{
    [Route("admin/[controller]")]
    public class DashboardController : Controller
    {
        [HttpGet]
        public IActionResult Index()
        {
            return View();
        }
    }
}

参考链接

通过以上配置,你可以成功地将请求路由到子文件夹中的控制器。

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

相关·内容

找出文件夹(及其文件夹)文件并复制目标文件夹

测试结果 文本提示 找出文件夹(及其文件夹)文件并复制目标文件夹 1.问题引出 下载了整个2018年和2019年上半年经济学人,不过是根据发刊日期建立了多个文件夹,我想复制出里面所有的*.epub...格式电子书,不可能一个一个复制吧,这样也太low了,遂有了这个想法。...而且为了便于按照名字排序,最后复制后名字做了处理,只保留了文件名数字(经济学人发布年份,因为不是一个人发布名字多少不统一。...程序源码 # UTF-8 # 整理文件 # 将指定目录下对应格式文件(eg.epub)复制指定目录 # ------------------------------------ import...path: "文件夹"和"文件"所在路径 :return: (list_folders, list_files) :list_folders: 文件夹

3.1K20

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

应用程序其余部分将包括 AngularJS 视图和控制器。 对于示例应用程序,我在视图文件夹下创建了两个额外文件夹,一个客户文件夹,一个产品文件夹。...所有的客户 Angular 视图和控件器将驻留在客户文件夹,所有的产品 Angular 视图和控件器将驻留在产品文件夹 。...主页索引 Razor 视图和 MVC 路由 ASP.NET MVC 中集成 AngularJS 一件有趣事情,就是应用程序实际上是如何启动和实现路由。...MVC 路由配置,会将应用路由 MVC Home 主控制器,并执行主控制器索引方法。...由于我有三个视图文件夹,主文件夹、客户文件夹和产品文件夹,我增加了一下 MVC 路由配置类以便将所有的请求路由主/索引路由中。当应用程序运行时点击 F5,同样也会进入 MVC 路由表。

7.6K60
  • ASP.NET MVC (一、控制器与视图)

    目录 前言: 1、MVC简介  2、项目创建:(这里使用工具为:Visual Studio 2019)  2.1、文件夹文件夹介绍: 3、控制器  3.1、添加控制器  3.2、添加视图层  3.3、...修改默认路由 前言: ASP.NET MVC是最简洁、最方便、最高效、最快速小型网站开发方法,本文可以让一个小白用最快速方式学会网站开发。...在 MVC 应用程序,视图仅显示界面;控制器则用于处理和响应用户输入和交互。  View 视图是显示应用程序用户界面 (UI) 组件。 通常,此 UI 由模型数据创建。 ...这个版本关注点是“One ASP.NET”计划,以及对整个ASP.NET框架所做核心增强。...3.1、添加控制器 在【Controllers】上点击【鼠标右键】,依次选择【添加】【控制器】  依次选择【控制器】【MVC 5 控制器 - 空】,点击【添加】 输入控制器名称:(这里Test举例

    1.8K21

    C# .NET面试系列七:ASP.NET Core

    在 Configure 方法,你可以定义应用程序路由规则,以确保请求被正确地路由相应控制器和动作方法。...21. dot net core 里面的路径是如何处理?在ASP.NET Core,请求路径是通过中间件处理管道路由系统进行处理。...路由系统负责将传入HTTP请求映射到相应处理程序(通常是控制器和动作方法),从而确定如何处理该请求。...通过配置路由系统,你可以定义应用程序 URL 结构,将请求映射到相应控制器和动作方法。这种灵活路由系统使得在ASP.NET Core 应用程序定义清晰而富有表达力 URL 成为可能。...7、控制器文件 (Controllers)Controllers 文件夹包含 MVC 框架控制器文件,用于处理 HTTP 请求并返回相应响应。

    29810

    Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC区域功能实现将多个MVC项目部署一个站点

    引子 本文将主要演示怎么将多个Asp.Net MVC项目部署一个IIS站点中例子,主要使用Asp.Net MVC提供区域功能。...一、项目创建 首先创建一个主Asp.Net MVC项目,然后创建一个Asp。Net MVC项目。...是一个类库项目 3、补充:Asp.Net MVC控制器:Controller是可以放到站点任何DLL,它在搜索控制器时,会搜索站点下所有DLL,当类符合条件:不是静态类,类名以Controller...所以我们可以把控制器放到任何其他项目中,只有将此控制器所在DLL拷贝、主站点Bin目录或者对应DLL目录就可以了。当然也可以放在默认Web项目中Controller文件夹下。...然后我们注册区域路由就会在Global.asaxApplication_Start事件方法中去执行注册主站点路由

    86510

    自己动手写一个简单MVC框架(第二版)

    一、ASP.NET MVC核心机制回顾   在ASP.NET MVC,最核心的当属“路由系统”,而路由系统核心则源于一个强大System.Web.Routing.dll组件。 ?   .../ 解析请求路由数据,并分发请求Handler /// public class UrlRoutingModule : IHttpModule {...核心部分有两点,一是路由规则匹配,二是为请求指定handler。   在路由规则匹配,通过设置路由数据键值对(Dictionary),并将设置好路有数据传递给MvcHandler。...在此文件夹,实现了三个核心部分:   ① 最核心处理者 : MvcHandler public class MvcHandler : IHttpHandler {...③ 路由扩展者 : RouteExtend 在以往ASP.NET MVC开发,我们会在Global全局应用处理文件为项目注册路由规则,但却不知道其实我们常用MapRoute方法其实是一个扩展方法

    1.4K20

    MVC框架介绍

    第二,下面先对该项目的一些文件进行介绍: MVC项目文件夹说明: 1.(App_Data):用来保存数据文件,比如XML文件等 2....(App_Start):包含mvc系统启动相关类, RouteConfig:路由配置, FilterConfig:过滤器配置   (1)RouteConfig:路由配置 public static...App_StartRouteConfig路由配置相关联(属于重要文件说明) protected void Application_Start()//调用路由注册方法 {...(2)global.asax:全局应用程序控制文件 第三,针对mvc下面基本介绍 1.controller介绍    (1)命名空间     using System.Web//asp.net核心命名空间...         (3.1控制器需要做事:   【1】获取数据:接受请求数据                     【2】业务处理:和Model交互。。。

    96810

    MVC项目开发那些用到知识点(Asp.Net Mvc3.0 Areas)

    但是在实际开发,随着项目规模不断扩大,Controller控制器也随之不断增多。...如果在Controllers文件夹下面有超过两位数controller,即便采用良好命名规范,或者用文件夹形式区分不同功能控制器,还是会影响项目的可阅读性和可维护性。...因此,在一些场景下,如果能把与某功能相关文件分离一个独立项目中是非常有用Asp.Net MVC提供了Areas(区域)概念达到这一目的。   ...我们将区域名称命名为Admin,点击确定后就会生成如图所示几个文件和文件夹,当然是已Areas为根文件夹 ?...那现在我们再添加一个HomeController控制器,和Index视图,再次运行看看 ?

    72730

    MVC项目开发那些用到知识点(Asp.Net Mvc3.0 Areas)

    但是在实际开发,随着项目规模不断扩大,Controller控制器也随之不断增多。...如果在Controllers文件夹下面有超过两位数controller,即便采用良好命名规范,或者用文件夹形式区分不同功能控制器,还是会影响项目的可阅读性和可维护性。...因此,在一些场景下,如果能把与某功能相关文件分离一个独立项目中是非常有用Asp.Net MVC提供了Areas(区域)概念达到这一目的。   ...我们将区域名称命名为Admin,点击确定后就会生成如图所示几个文件和文件夹,当然是已Areas为根文件夹 ?...那现在我们再添加一个HomeController控制器,和Index视图,再次运行看看 ?

    75610

    ASP.NET MVC5高级编程——(1)了解MVC模式和第一个MVC程序、认识控制器

    全局应用程序控制文件 3、MVC约定: 视图访问和寻址规则 1)、在控制器中使用View()方法调用视图,返回和“动作方法同名”视图 2)、寻址规则:View()方法默认从“View文件夹”下寻找和控制器同名文件夹...MVC约定 1)、控制器:必须以Controller结尾 2)、视图:必须放在Views文件夹下,并且要和控制器同名子目录创建 约定胜于配置 1)、提前规定好 2)、无需配置 3)、不遵守规则则出错...Ctrl+F5,就是不调试启动: 然后可以自己添加方法: 修改Details方法,使其读取和显示一个名为ID参数,在Asp.Net MVC 5默认路由约定:将操作方法名称后面的URL这个片段作为一个参数...类Browse方法,这就是操作路由。...3 ,在MVC控制器才是核心,每一个请求都必须通过控制器处理,而且有些请求不需要模型和视图! 控制器就是MVC应用程序“指挥员”,它紧密编排用户、模型对象和视图交互。

    1.9K20

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

    .NET MVC第二章、控制器使用 目录 .NET MVC第二章、控制器使用 创建新控制器 添加MVC视图 视图访问 路由设置 母版页 ---- 创建新控制器 在Controllers文件夹上点击【鼠标右键...Views下看到出现了一个【Test】文件夹,这个文件夹就是对应Test控制亲文件夹。...视图页面的所有内容默认填入_Layout.cshtml@RenderBody所在位置 RenderSection:作用是“块占位符”。...将页面定义代码块填入_Layout.cshtml@ RenderSection所在位置 母版页一般咱们MVC就选择上下结构就够用了,如果有单独需求,可以将菜单选项编辑成下拉菜单,这样功能选择就肯定够用了...没有其它必要。 因为MVC做项目一般都是提供千人以内企业办公需求,大型项目咱们会使用ASP.NET CORE来创建,微服务在处理并发上会好很多。

    86810

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

    (2)每个Controller都对应View一个文件夹文件夹名称跟Controller名相同   (3)Controller方法名都对应一个View视图(非必须,但是建议这么做)而且View...(1)所有的视图必须放到Views目录下   (2)不同控制器视图用文件夹进行分割,每个控制器都对应一个视图目录   (3)一般视图名字跟控制器Action相对应(非必须)   (4)多个控制器公共视图放到...查询数据时需要转换合适类型 在ViewPage查询数据时不需要类型转换 有一些类型转换代码 可读性更好   (6)如何在程序中使用ViewData与ViewBag   ①在Controller代码...  我们通过调试可以知道,在MVC中所有的请求都归结控制器下面的Action。...所以,所有的请求都是要指定一个具体Action,Url格式是根据路由规则来定。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置呢?

    2K30

    Web API--入门--(一)ASP.NET Web API 2(C#)入门

    在“ 新建ASP.NET项目 ”对话框,选择“ 空”模板。在“添加文件夹核心参考”下,查看Web API。单击确定。 ? 注意 您还可以使用“Web API”模板创建一个Web API项目。...我们将添加一个控制器,可以返回产品列表或由ID指定单个产品。 注意 如果您使用ASP.NET MVC,您已经熟悉了控制器。...Web API控制器类似于MVC控制器,但继承ApiController类而不是Controller类。 在解决方案资源管理器,右键单击Controllers文件夹。选择添加,然后选择控制器。 ?...脚手架在Controllers文件夹创建一个名为ProductsController.cs文件。 ? 注意 您不需要将控制器放入名为Controllers文件夹。...例如,要获得ID为5产品,URI为api/products/5。 有关Web API如何将HTTP请求路由控制器方法更多信息,请参阅ASP.NET Web API路由

    4.2K10

    自己动手写一个简单MVC框架(第一版)

    2.2 模拟ASP.NET MVC,创建几个MVC文件夹   按照ASP.NET MVC惯例添加Controllers、Models和Views文件夹(不是必须): ?...可以看出,最后我们实际上做就是解析URL,并通过重定向Index.ashx进行所谓Route路由工作。 2.6 运行吧伪MVC   (1)默认路由 ?   (2)/home/add ?   ...三、改造DEMO:借助反射让多态发光 3.1 在Global文件模拟路由规则表   想想我们在ASP.NET MVC项目中是不是首先向程序注册一些指定路由规则,因此这里我们也在Global.asax...:   (1)在静态构造函数初始化所有Controller // 路由表 private IDictionary routeData; // 所有控制器类型集合...此次实验,核心就在于获取路由数据,指定处理程序,也就是理解并模拟路由机制。

    1K21

    ASP.NET Core 基础知识】--前端开发--集成前端框架

    ng build --prod 将构建后文件部署 ASP.NET Core 项目: 将 Angular 应用构建后生成 dist 文件夹内容复制 ASP.NET Core 项目的 wwwroot...npm run build 将构建后文件部署 ASP.NET Core 项目: 将 React 应用构建后生成 build 文件夹内容复制 ASP.NET Core 项目的 wwwroot...npm run build 将构建后文件部署 ASP.NET Core 项目: 将 Vue 应用构建后生成 dist 文件夹内容复制 ASP.NET Core 项目的 wwwroot 文件夹...四、前端路由ASP.NET CORE路由整合 4.1 Angular路由 在将 Angular 路由ASP.NET Core 路由整合时,通常需要考虑两者之间路由配置以及如何处理前端路由和后端路由冲突...例如,在 ASP.NET Core 可以创建一个专门处理 API 请求控制器,如 ApiController,并在 Startup.cs 对 API 控制器进行路由配置。

    18000

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

    (1)Controller放到controllers文件夹,并且 命名方式以Controller结尾   (2) 每个Controller都对应View一个文件夹文件夹名称跟Controller...不同控制器视图用文件夹进行分割, 每个控制器都对应一个视图目录   (3)一般视图名字跟控制器Action相对应(非必须)   (4)多个控制器 公共视图放到Shared...查询数据时需要转换合适类型 在ViewPage查询数据时不需要类型转换 有一些类型转换代码 可读性更好   (6)如何在程序中使用ViewData与ViewBag   ①在Controller代码...  我们通过调试可以知道,在MVC中所有的请求都归结控制器下面的Action。...所以,所有的请求都是要指定一个具体Action,Url格式是根据路由规则来定。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置呢?

    90120
    领券