从自定义HTML帮助程序访问WebViewPage

时间:2011-12-22 02:02:14

标签: asp.net-mvc asp.net-mvc-3 razor html-helper viewpage

我有一个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 个答案:

答案 0 :(得分:9)

// Warning: this cast will crash
// if you are not using the Razor view engine
var wvp = (WebViewPage)htmlHelper.ViewDataContainer;
var result = wvp.Blah();

答案 1 :(得分:0)

您应该更改该方法以扩展HttpContextBase,您可以从HtmlHelperWebViewPage进行访问。

答案 2 :(得分:0)

我会尝试:

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

答案 3 :(得分:0)

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

public static MvcHtmlString ToBodyEnd<TModel>(this HtmlHelper<TModel> htmlHelper, ...) {
       var vp = (DerivedWebViewPage<TModel>)htmlHelper.ViewDataContainer;
    //... more code ...
    }