ASP.NET Core Route 属性在整个控制器类中可用

2024-01-13

有没有办法让路由中指定的属性在整个类中可用?例如,考虑这个控制器:

[Route("api/store/{storeId}/[controller]")]
public class BookController
{
    [HttpGet("{id:int:min(1)}")]
    public async Task<IActionResult> GetBookById(int storeId, int id)
    {
    }
}

还有这个请求:

/api/store/4/book/1

在 GetBookById 方法中,storeId 变量正确填充为 4,id 变量填充为 1。但是,不必在 BookController 的每个方法中传递 storeId 变量,有没有办法执行以下操作:

[Route("api/store/{storeId}/[controller]")]
public class BookController
{
    private int storeId;

    [HttpGet("{id:int:min(1)}")]
    public async Task<IActionResult> GetBookById(int id)
    {
        //use value of storeId here
    }
}

如果控制器继承自Controller类然后你可以覆盖OnActionExecuting方法,如果控制器继承自ControllerBase你需要实施IActionFilter使其工作的接口

[Route("api/store/{storeId}/[controller]")]
public class BookController : ControllerBase, IActionFilter
{
    private int storeId;

    [HttpGet("{id:int:min(1)}")]
    public async Task<IActionResult> GetBookById(int id)
    {
        // use value of storeId here
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        //empty
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        string value = context.RouteData.Values["storeId"].ToString();
        int.TryParse(value, out storeId);
    }
}

或者有更好的解决方案使用[FromRoute]控制器属性上的属性(如所描述的here https://stackoverflow.com/a/60078086/7775908)

[Route("api/store/{storeId}/[controller]")]
public class BookController : ControllerBase
{
    [FromRoute(Name = "storeId")] 
    public int StoreId { get; set; }

    [HttpGet("{id:int:min(1)}")]
    public async Task<IActionResult> GetBookById(int id)
    {
        // use value of storeId here
    }       
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core Route 属性在整个控制器类中可用 的相关文章

  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 主构造函数不再在 VS2015 中编译

    直到今天 我可以使用主构造函数 例如 public class Test string text private string mText text 为了能够做到这一点 在以前的 Visual Studio CTP 中 我必须将其添加到 c
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • C# 反序列化过程中创建指向父对象的指针

    我有这样的课程 Serializable public class child public Parent parent Serializable public class Parent public List
  • 何时分离或加入 boost 线程?

    我有一个方法 大约每 30 秒触发一次 我需要在一个线程中包含它 我有一个可以从类外调用的方法 像 call Threaded Method 这样的东西会创建一个线程 该线程本身会调用最终的线程方法 这些是 MyClass 的方法 void
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • Code::Blocks 中的调试似乎不起作用 - 缺少调试符号

    我正在尝试在 Code Blocks 中调试程序 我跟着本指南 http wiki codeblocks org index php title Debugging with Code Blocks and 这个短视频 http www y
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS
  • 查找和替换正则表达式问题

    感谢这里对我其他问题的所有大力帮助 我开始掌握正则表达式 但我仍然对这个一无所知 我的代码是 StreamReader reader new StreamReader fDialog FileName ToString string con

随机推荐

  • 删除 Unix 文件中的 ^@ 字符

    我有一个关于删除不可见字符的问题 这些字符只有当我们尝试使用 vi 命令查看文件时才能看到 我们有一个由 Datastage 应用程序生成的文件 源是 DB2 表 gt 目标是 txt 文件 文件包含不同数据类型的数据 我遇到的问题是只有
  • 更改 Java 临时 Internet 文件存储位置

    我正在尝试更改 Java Web Start 的存储位置 我读到可以通过java控制面板更改位置 我到达那里 我可以看到 临时互联网文件 的路径 但 更改 按钮是灰色的 为什么我不能改变这条路径 我需要将其更改为另一个硬盘驱动器 I goo
  • dplyr::mutate 的并行版本是什么?

    鉴于我有一个非常大的数据框 请告知R中是否有一个函数可以使dplyr mutate并行多核运行 Like furrr包 你可以在其中设置plan并运行多核 None
  • Laravel 缓存获取所有带标签的项目

    在 Laravel 中 您可以使用以下标签将项目放入缓存中 Cache tags bans gt put result gt ip result gt reason 但我似乎无法找到一种方法来获取带有特定标签的所有项目 是否可以检索带有特定
  • 在此特定示例中如何将 Javascript 变量传递给 Twig

    以下代码在我的Twig模板 它用于加载CSS文件或其他文件 具体取决于用户选择的主题 这在一个简单的HTML页面但是当我尝试将其带到Twig我的模板Symfony应用程序我找不到通过的方法CSS路线 与Twig 到Javascript do
  • 如何在android studio中仅允许特定指纹

    我正在构建一个应用程序 我只想允许每个设备使用特定的指纹 指纹是原始的 真实的 有没有什么方法可以实现这个想法 也许可以转换成一个数字 我可以将其存储在数据库中并在需要时进行匹配 关于你的问题有几点 您可以使用根据设备中当前注册的指纹生成的
  • POST/GET 变量命名规则?

    在命名表单中的 POST 变量或查询字符串中的 GET 变量时 是否需要遵循任何规则 Thanks 从字面上回答这个问题 我所知道的命名确实没有 规则 POST and GETphp ini 中的数组键它是一个像其他数组一样的数组 看一眼键
  • 从州-县字符变量中提取州和县

    我在单个字符串变量中有州和县名称州 县 我想将它们分开以创建两个不同的变量 states and county 有些州有两个 甚至三个 单词 县也是如此 gt states county names df states county 1 C
  • 在 Google AppEngine 中检索 .txt 文件内容

    我正在尝试使用以下命令上传文本文件
  • 如何在asp.net core中修改HttpContext.Request.Form

    我有一个 HttpContext Request 对象 其表单中的数据是错误的 我想修复它并发送正确的 HttpContext HttpContext Request Form 是只读的 但如果不是 我就会简单地执行以下操作 HttpCon
  • Ionic 应用程序 - Cordova - Safari 调试不起作用

    过去 我能够在 iPhone 上运行 Ionic Cordova 应用程序并将其插入 Mac 然后在 Mac 上打开 Safari 并转到 Develop gt PHONE NAME gt localhost 来检查我的应用程序 目前 当我
  • 在两点之间创建 svg 弧

    我想要connect使用圆弧绘制两个 SVG 点 例如两个圆的中心 如果只有一个连接 则行
  • 给定一个十进制数,找到给出整数结果的最小整数乘数

    最好用一个例子来描述问题 假设我有一个十进制值 100 227273 100 227273 X Y 我需要找到给出整数 Y 的最小正整数 X 如果 100 227273 只是一个近似值 并且您想获得最佳有理近似值 请使用连分数 http e
  • 将 printf 与两个 UART 一起使用

    我已经实施了fputc and fgetc在 retarget c 中 通过 Cortex M3 上的 UART0 成功使用 printf 但是 我想要第二个 UART 通道来获取额外的调试信息 我怎样才能像使用 printf 集成 UAR
  • 代码签名证书有什么用?

    我的公司从赛门铁克订购了代码签名证书 并给了我使用它的任务 我不知道该怎么做 甚至在他们的网站上也没有明确的说明 我有一个 cer 格式的证书 当我尝试从 Visual studio 2013 属性窗口使用它时 它说该证书没有与之关联的私钥
  • 如何在R中显示代码的进度?

    我现在正在处理一个大型数据集 某些函数可能需要几个小时才能处理 我想知道如何通过进度条或数字 1 2 3 100 显示代码的进度 这是一个例子 谢谢 require Kendall mydata matrix rnorm 6000 300
  • 确保 Grails REST 服务与移动应用程序一起使用的安全

    我正忙于研究如何在移动应用程序中使用 REST 服务 希望能得到一些见解 场景如下 考虑一个向用户提供服务的 Web 应用程序 Web 应用程序也将成为用户的主要交互点 这将在 Grails 中完成 并通过 Spring Security
  • 如何使用Android不支持的java core lib?

    android中使用核心类时出现问题 DX 处理 javax xml bind Binder class 时遇到问题 我确实需要 javax xml 中的类来开发 Web 服务 但是 Android 不完全支持它 当我导入这些罐子时 有 e
  • 使用某种编程语言(JS/C#..)计算RSI(相对强度指数)

    我正在努力计算RSI Relative Strength Index 我有这样的数据 Date Close Change Gain Loss 计算公式是 RSI 100 100 1 RS where RS Average Gain Aver
  • ASP.NET Core Route 属性在整个控制器类中可用

    有没有办法让路由中指定的属性在整个类中可用 例如 考虑这个控制器 Route api store storeId controller public class BookController HttpGet id int min 1 pub