扩展方法和Razor

时间:2011-02-16 01:43:05

标签: asp.net extension-methods razor webmatrix

我在app_code中定义了一个扩展方法,如下所示。

public static class Extensions
{
    public static string Hi(this object obj)
    {
        return "hi";
    }
}

在剃须刀页面中,任何事情都可以说嗨:)

@Html.Hi();
@Request.Hi();   
@this.Hi();

@Hi()不起作用。有没有办法使@Hi()有效?

3 个答案:

答案 0 :(得分:5)

C#只允许您调用由对象实例限定的扩展方法 如果您的扩展方法扩展了您的类型,则无法“直接”调用它;你需要写this.ExtensionMethod()

执行您要求的唯一方法是创建一个继承WebPage(或WebViewPage用于MVC视图)的类,并更改您的Razor页面以继承该类(使用{ {1}}指令)

答案 1 :(得分:1)

我认为你不能只叫@Hi()。非常肯定是@ this.Hi()

答案 2 :(得分:0)

就像正常情况一样,您必须将其包含在使用中。 razor syntaz是

@using Namespace.Namespace