我有一个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帮助程序访问它。
答案 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
,您可以从HtmlHelper
和WebViewPage
进行访问。
答案 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 ...
}