4

我有一个 ASP.NET MVC 3 Razor Web 应用程序。

我有一个WebViewPage扩展:

public static bool Blah(this WebViewPage webViewPage)
{
   return blah && blah;
}

我想从我的HtmlHelper扩展程序中访问它:

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

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

4

4 回答 4

10
// Warning: this cast will crash
// if you are not using the Razor view engine
var wvp = (WebViewPage)htmlHelper.ViewDataContainer;
var result = wvp.Blah();
于 2011-12-22T08:08:45.760 回答
0

您应该将该方法更改为 extend HttpContextBase,您可以从HtmlHelper和访问它WebViewPage

于 2011-12-22T02:04:19.913 回答
0

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

public static MvcHtmlString ToBodyEnd<TModel>(this HtmlHelper<TModel> htmlHelper, ...) {
       var vp = (DerivedWebViewPage<TModel>)htmlHelper.ViewDataContainer;
    //... more code ...
    }
于 2014-06-03T15:32:31.870 回答
0

我会尝试:

((WebViewPage)htmlHelper.ViewContext.View). Blah()
于 2011-12-22T02:11:27.727 回答