【发布时间】:2020-01-24 19:47:23
【问题描述】:
我将_serviceOne 注入到我的控制器中,该控制器有一个返回int 值的方法。我正在尝试将此值传递给我的自定义操作过滤器。
这不起作用,我收到错误:An object reference is required for the non-static field, method, or property 'NameController._serviceOne' 我尝试在其中设置 Number = _serviceOne.GetIntNumber。
我知道我可以访问控制器内部的值(例如:控制器参数、ViewBag、ViewData、控制器中的变量),但我想将该值传递给CustomActionFilter 过滤器的@987654326 @属性。
过滤器和服务方法按我想要的方式工作,但它不会让我将_serviceOne.GetIntNumber 的值传递到过滤器。为什么这不起作用,我怎样才能使它起作用?
NameController.cs:
public class NameController : Controller
{
private readonly ServiceOne _serviceOne;
public NameController(ServiceOne serviceOne)
{
_serviceOne = serviceOne;
}
[CustomActionFilter(Name = "CorrectName", Number = _serviceOne.GetIntNumber)] //does not work
[HttpGet]
public IActionResult Index()
{
return View();
}
}
CustomActionFilter.cs:
public class CustomActionFilter : ActionFilterAttribute
{
public string Name { get; set; }
public int Number { get; set; }
public override void OnActionExecuted(ActionExecutedContext context)
{
if (Name == "CorrectName" && Number == 1) {
RouteValueDictionary routeDictionary = new RouteValueDictionary { { "action", "SomeAction" }, { "controller", "NameController" } };
context.Result = new RedirectToRouteResult(routeDictionary);
}
base.OnActionExecuted(context);
}
}
【问题讨论】:
标签: c# asp.net-core model-view-controller service action-filter