gpt4 book ai didi

asp.net-mvc-3 - Asp.net mvc 3-获取当前 Controller 实例(不仅仅是名称)

转载 作者:行者123 更新时间:2023-12-03 13:59:37 26 4
gpt4 key购买 nike

我知道如何获取当前 Controller 名称

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

但是有什么方法可以在某个类中获取当前 Controller 实例(不是在 Action 中,也不是在 View 中)?

最佳答案

默认情况下,您只能访问当前的 Controller在带有 ControllerContext.Controller 的 Controller 内或在带有 ViewContext.Context 的 View 内.要从某个类访问它,您需要实现自定义 ControllerFactory它将 Controller 实例存储在某处并从那里检索它。例如在 Request.Items :

public class MyControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
var controller = base.CreateController(requestContext, controllerName);
HttpContext.Current.Items["controllerInstance"] = controller;
return controller;
}
}

然后在您的 Application_Start 中注册它:
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());

您可以稍后获取 Controller 实例:
public class SomeClass
{
public SomeClass()
{
var controller = (IController)HttpContext.Current.Items["controllerInstance"];
}
}

但我会找到另一种方法将 Controller 实例传递给我的类,而不是这种“hacky”解决方法。

关于asp.net-mvc-3 - Asp.net mvc 3-获取当前 Controller 实例(不仅仅是名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com