扩展system . web .网页,不带'this'

本文关键字:this 不带 system web 网页 扩展 | 更新日期: 2023-09-27 18:05:21

我试图扩展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)

是否有一种方法来扩展网页类型,以便我可以离开this以类似的方式从cshtml文件内调用RenderPage ?

@RenderPage("~/_PageToRender.cshtml")

扩展system . web .网页,不带'this'

另一种选择是创建一个新的类来代替WebPage。例如:

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

然后派生出它而不是网页

public class MyWebPage : WebPagePlus // WebPage
{
//...
}