Extension Method and Razor Page

2019-05-04 17:07发布

I have defined an extension method in app_code like below.

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

In the razor page, anything can say Hi :)

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

But @Hi() doesn't work. Is there a way to make @Hi() work?

3条回答
小情绪 Triste *
2楼-- · 2019-05-04 17:38

Just like a normal scenario you have to include it in a using. the razor syntaz is

@using Namespace.Namespace
查看更多
聊天终结者
3楼-- · 2019-05-04 17:44

I don't think you can call just @Hi(). Pretty sure is has to be @this.Hi()

查看更多
我只想做你的唯一
4楼-- · 2019-05-04 17:58

C# only allows you to call extension methods qualified by an object instance.
If you have an extension method that extends your type, you can't call it "directly"; you need to write this.ExtensionMethod().

The only way to do what you're asking for is to make a class which inherits WebPage (or WebViewPage for MVC views) and change your Razor page to inherit that class (using the @inherits directive)

查看更多
登录 后发表回答