从RazorPage <tmodel>派生的类访问控制器?

时间:2019-01-31 15:24:48

标签: asp.net-core controller viewcontext

我正在将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>类中是否有办法获得对当前控制器的访问权限?

在有人说之前,我知道我通常不应该从视图内部访问控制器,但这就是编写此代码库的方式,我试图在修复此类代码之前(如果可能)迁移它。

0 个答案:

没有答案