我正在制作ControllerFactory
。在本课程中,我希望在方法CreateController
中访问所有控制器中都可访问的TempData
变量。
public class ControllerFactory : IControllerFactory
{
public IController CreateController(RequestContext requestContext, string controllerName)
{
//TODO :IoC implementation or call comes here.
return null;
}
public void ReleaseController(IController controller)
{
var disposable = controller as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
//HERE I WANT TO HAVE ACCESS TO THE TempData
}
public SessionStateBehavior GetControllerSessionBehavior(System.Web.Routing.RequestContext requestContext, string controllerName)
{
return SessionStateBehavior.Default;
}
}
注意:在代码到达控制器时,在调用它的页面时,函数CreateController
会出现在此代码中。
任何想法我如何在TempData
方法中访问CreateController
?
答案 0 :(得分:1)
在ASP.NET Core MVC源代码中,他们执行此操作
var tempDataDictionaryFactory = context.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
var tempDataDictionary = tempDataDictionaryFactory.GetTempData(context);
if (tempDataDictionary.TryGetValue(MyClaims.Claim1, out object value))
{
return (string)value;
}
上下文是HttpContext
哪种方式适合我