0

我正在尝试扩展System.Web.WebPage该类以公开一个名为RenderZone

using System.Web.WebPages;

public static class WebPageExtensions
{
    public static HelperResult RenderZone(this WebPage webPage, int zone) {
    return webPage.RenderPage("~/_RenderWidgets.cshtml", new {ZoneId = zone});
    }
}

这可行,但为了在页面文件(.cshtml)中调用扩展方法,我必须在方法调用前加上this例如

@this.RenderZone(1)

有没有办法扩展 WebPage 类型,以便我可以this以类似于从 cshtml 文件中调用 RenderPage 的方式省略?

@RenderPage("~/_PageToRender.cshtml")
4

1 回答 1

3

另一种方法是创建一个新类,您的页面派生自该类,而不是WebPage. 例如:

public class WebPagePlus : WebPage
{
    public HelperResult RenderZone(int zone) {
       return this.RenderPage("~/_RenderWidgets.cshtml", new {ZoneId = zone});
    }
}

然后从中派生而不是 WebPage

public class MyWebPage : WebPagePlus // WebPage
{
//...
}
于 2013-03-23T14:42:25.940 回答