我正在将ASP.NET MVC 5应用程序迁移到ASP.NET MVC Core。
在旧代码库的~/Views/web.config
文件中,我们将页面的pageBaseType
属性设置为自WebViewPage<TModel>
派生的自定义类型:
<pages pageBaseType="MyBaseView"> … </pages>
该自定义类型具有通过ViewContext公开控制器的属性:
public BaseController Controller => ViewContext?.Controller as BaseController;
我已经类似地设置了ASP.NET Core应用程序,在_ViewImports.cshtml
而不是web.config
中对其进行了配置:
@inherits MyBaseView<TModel>
但是,Microsoft.AspNetCore.Mvc.Rendering.ViewContext
上没有System.Web.Mvc.ViewContext
拥有的Controller属性。
因此,从我的MyCustomView<TModel>
派生的RazorPage<TModel>
类中是否有办法获得对当前控制器的访问权限?
在有人说之前,我知道我通常不应该从视图内部访问控制器,但这就是编写此代码库的方式,我试图在修复此类代码之前(如果可能)迁移它。