没有'this'扩展System.Web.WebPage

时间:2013-03-23 14:34:21

标签: c#

我正在尝试扩展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类型,以便我可以像在cshtml文件中调用RenderPage一样省略this

@RenderPage("~/_PageToRender.cshtml")

1 个答案:

答案 0 :(得分: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
{
//...
}