Asp.net mvc 从自定义HTML帮助程序访问WebViewPage

Asp.net mvc 从自定义HTML帮助程序访问WebViewPage,asp.net-mvc,asp.net-mvc-3,razor,html-helper,viewpage,Asp.net Mvc,Asp.net Mvc 3,Razor,Html Helper,Viewpage,我有一个ASP.NETMVC3RazorWeb应用程序 我有一个WebViewPage扩展名: public static bool Blah(this WebViewPage webViewPage) { return blah && blah; } public static MvcHtmlString BlahHelper(this HtmlHelper htmlHelper, string linkText, string actionName) { //

我有一个ASP.NETMVC3RazorWeb应用程序

我有一个
WebViewPage
扩展名:

public static bool Blah(this WebViewPage webViewPage)
{
   return blah && blah;
}
public static MvcHtmlString BlahHelper(this HtmlHelper htmlHelper, string linkText, string actionName)
{
   // how can i get access to the WebViewPage extension method here?
}
我想从我的
HtmlHelper
分机访问此文件:

public static bool Blah(this WebViewPage webViewPage)
{
   return blah && blah;
}
public static MvcHtmlString BlahHelper(this HtmlHelper htmlHelper, string linkText, string actionName)
{
   // how can i get access to the WebViewPage extension method here?
}

如果有必要,我当然可以复制
WebViewPage
扩展的功能,但我只是想知道是否可以从HTML帮助程序访问它。

您应该将该方法更改为扩展
HttpContextBase
,您可以从
HtmlHelper
WebViewPage

访问它,我会尝试:

((WebViewPage)htmlHelper.ViewContext.View). Blah()

我也有同样的问题,被接受的答案让我找到了解决方案(+1)。也许这个暗示对其他人也有帮助。 此外,我必须在强类型视图中使用WebViewPage的通用版本。 否则,我会得到一个类型强制转换异常。

公共静态MvcHtmlString ToBodyEnd(此HtmlHelper HtmlHelper,…){
var vp=(DerivedWebViewPage)htmlHelper.ViewDataContainer;
//…更多代码。。。
}

问题不是关于扩展的功能,而是如何实现我在一般意义上提出的要求。我对问题进行了编辑,以反映我认为这是不可能的;在“本地人”窗口中浏览
htmlHelper
,看看是否可以找到它。很好的尝试。看起来
视图
实际上是视图引擎,而不是视图页面。我正在使用一个自定义视图引擎(Razor CSHTML生成器),因此类型是
PrecompiledRazorViewEngine
。谢谢你,伙计。:)