我有ActionFilter
从Request Header获取一些值。然后我将它们存储在Request.Properties
中,如下所示:
actionContext.Request.Properties.Add("technician", username);
actionContext.Request.Properties.Add("secret", secret);
现在我想在TaskRepository
。
我的控制器构造函数:
public TaskController(ITaskRepository repository)
{
_repository = repository;
}
我无法在此获取属性,因为ActionFilters
正在执行已经选择和创建控制器时。
我可以在Controller的每个动作中获取属性并将它们传递给存储库,但我认为这不是正确的方法。
我的问题是如何将值从ActionFilter
传递到Repository
?
谢谢你的时间。
答案 0 :(得分:2)
我终于做到了。
首先,我为此Extension
编写IHTTPController
方法:
public static void SetCredentialsToRepository(this IHttpController controller, string technician, string secret);
然后我实现这个函数:
public void SetCredentialsToRepository(string technician, string secret)
{
_repository.SetCredentials(technician, secret);
}
然后在我的ActionFilter中我调用这个方法:
actionContext.ControllerContext.Controller.SetCredentialsToRepository(username, secret);