HtmlHelper的“ ViewContext.Controller”发生了什么?

时间:2019-08-30 11:18:35

标签: c# asp.net asp.net-core .net-core html-helper

在旧的ASP.NET Web应用程序中,我编写了HTML帮助程序,以通过访问ViewContext.Controller来访问执行当前视图的控制器的上下文:

public static string GetControllerString(this HtmlHelper htmlHelper) {
    string controllerString = htmlHelper.ViewContext.Controller.ToString();
    return ".NET Controller: " + controllerString;
}

但是,这似乎在ASP.NET Core的HTML帮助器对象中不再存在:

public static string GetControllerString(this IHtmlHelper htmlHelper) {
    string controllerString = htmlHelper.ViewContext.Controller.ToString(); // Doesn't exist!
    return ".NET Core Controller: " + controllerString;
}

ViewContext.Controller发生了什么?现在是否不可能从HTML帮助器对象中获取控制器上下文?

1 个答案:

答案 0 :(得分:2)

他们稍微改变了继承链和术语。因此,ASPNET Core中的ViewContext不会像以前的ASPNET MVC framework中那样继承自ControllerContext

相反,来自ViewContext的{​​{1}} inherits是更通用的术语。

由于这个事实,ActionContext对象上没有继承的Controller属性,但是您可以使用ViewContext property来获取所需的值。 / p>

ActionDescriptor