【发布时间】:2018-10-17 13:42:00
【问题描述】:
我有一个要从函数调用的操作过滤器。但是,在此过滤器中,我指的是另一个名为 ValidateRoleClient 的类。如何进行服务注入?或者在我的函数中正确调用这个类?
public class RolesFilterAttribute : ActionFilterAttribute
{
public ValidateRoleClient validateRoleClient;
public string Role { get; set; }
public RolesFilterAttribute(ValidateRoleClient validateRoleClient)
{
this.validateRoleClient = validateRoleClient;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.HttpContext.Request.Cookies["Token"] != null || context.HttpContext.Request.Cookies["RefreshToken"] != null)
{
TokenViewModel tvm = new TokenViewModel
{
Token = context.HttpContext.Request.Cookies["Token"],
RefreshToken = context.HttpContext.Request.Cookies["RefreshToken"]
};
ValidateRoleViewModel vrvm = new ValidateRoleViewModel
{
Role = Role,
Token = tvm
};
validateRoleClient.ValidateRole(vrvm);
}
}
}
这就是我在函数中引用过滤器的方式
[RolesFilter]
public IActionResult About()
{
return View();
}
我从中得到的当前错误是
严重性代码描述项目文件行抑制 状态错误 CS7036 没有给出对应于的参数 所需的形式参数“validateRoleClient” 'RolesFilterAttribute.RolesFilterAttribute(ValidateRoleClient)'
【问题讨论】:
-
为此实现自己的过滤器工厂可能有点多 - docs 中有更简单的选项,例如
TypeFilterAttribute.
标签: c# asp.net-core asp.net-core-mvc