【问题标题】:.NET Core : Get parameter value in controller's constructor.NET Core:在控制器的构造函数中获取参数值
【发布时间】:2019-11-22 21:37:07
【问题描述】:

我已经完成了这个解决方案,但这不是我想要的 get parameters from URL in controller constructor

假设,在 ASP.NET Core 控制器中,我请求一些方法。假设控制器类似于:

public class ClassroomsController : Controller {

    private string requestedUserId;

    // C O N S T R U C T O R
    public ClassroomsController()
    {
        /**** THIS POINT ***/
        requestedUserId = ;
    }

    [HttpGet("Classrooms/API01/{userId}")]
    public IActionResult API01(string userId)
    {

    }

    [HttpGet("Classrooms/API02/{userId}")]
    public IActionResult API02(string userId)
    {

    }
}

我想要的是我是否在 Classrooms/API02Classrooms/API01 中请求请求的UserId 应该在 基于参数 userId 的构造函数内部发起 strong> 在 API01 和 API02 中;

【问题讨论】:

  • 如果没有传入requestedUserId 值,您希望如何填充它?
  • 如果这是为了实现某种身份验证/授权,请使用它而不是正常工作。
  • 在控制器构建时,没有没有请求可以从中获取URL。你想做的事情在逻辑上是不可能的。了解为什么您想这样做会很有帮助,因为您似乎正在尝试用一种不切实际的方法解决另一个问题。
  • 当我们知道我们是否向控制器请求时,首先执行构造函数。这就是为什么我在这里问是否有任何可能的方法来做到这一点。 @大卫G
  • @FranzGleichmann 有没有办法在构造函数中捕获 URL? :'(

标签: c# asp.net-core model-view-controller .net-core


【解决方案1】:

我想要的是我是否在 Classrooms/API02 或 Classrooms/API01 中请求请求的UserId 应该根据 API01 和 API02 中的参数 userId 在构造函数中启动

简答:不可能。

所有与请求相关的逻辑都需要在动作本身内发生。

public class ClassroomsController : Controller {

    // C O N S T R U C T O R
    public ClassroomsController() {
        //...
    }

    [HttpGet("Classrooms/API01/{userId}")]
    public IActionResult API01(string userId) {
        string requestedUserId = userId;

        //...
    }

    [HttpGet("Classrooms/API02/{userId}")]
    public IActionResult API02(string userId) {
        string requestedUserId = userId;

        //...
    }
}

如果有一些通用功能需要调用,则将其移至调用时可由控制器操作调用的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多