我有一个名为 AuthoriseAttribute 的自定义属性,其构造函数如下所示:
public AuthoriseAttribute(int userId)
{
.. blah
}
这与名为 GetUserDetails()
的方法一起使用,如下所示:
[Authorise(????????)]
public UserDetailsDto GetUserDetails(int userId)
{
.. blah
}
在运行时,Authorize 属性的存在会导致执行一些需要用户 ID 的授权代码。显然,这可以从 GetUserDetails()
方法的参数中提取,但这意味着授权代码取决于方法的参数被赋予特定名称。
我希望能够将 userId
参数的实际值传递到属性中,以便授权代码使用传递到属性中的值(即不是方法参数), 其名字广为人知。
像这样的东西(不起作用):
[Authorise(userId)]
public UserDetailsDto GetUserDetails(int userId)
{
.. blah
}
这样的事情可能吗?
最佳答案
有一种方法可以_in ASP.NET MVC_使用操作方法(通常不使用属性)
public class CustomAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int userId = (int)filterContext.ActionParameters["userId"];
}
}
关于c# - 如何将方法参数插入自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435403/