我希望在视图上访问 ViewContext ,因为我已经创建了扩展方法并使用该扩展我想在View上访问Base Controller。
请参阅以下代码
public static class ViewContextExtension
{
public static BaseController BaseController(this ControllerContext view)
{
BaseController objBaseController = null;
if (view != null)
objBaseController = view.Controller as BaseController;
return objBaseController;
}
}
我想在MVC Core 2中使用相同的代码,但我无法在视图端访问它。
以前我在MVC 5.2.3中使用它。例如
!ViewContext.BaseController().IsMobileDevice
答案 0 :(得分:1)
我找到了上述问题的解决方案。请参阅下文。
使用名称库。
using Microsoft.AspNetCore.Mvc;
查找以下代码
public static class ControllerContextExtension
{
/// <summary>
/// BaseController
/// </summary>
/// <param name="view"></param>
/// <returns></returns>
public static BaseController BaseController(this ControllerContext view)
{
var factory = CreateControllerFactory();
return factory.CreateController(view) as BaseController;
}
private static DefaultControllerFactory CreateControllerFactory()
{
var propertyActivators = new IControllerPropertyActivator[]
{
new DefaultControllerPropertyActivator(),
};
return new DefaultControllerFactory(
new DefaultControllerActivator(new TypeActivatorCache()),
propertyActivators);
}
}
在视图中访问以上代码.cshtml。
controllerContext.BaseController().IsMobileDevice
建议我们是否可以改进上述代码。快乐的编码。