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?

回答1:

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)



回答2:

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



回答3:

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

@using Namespace.Namespace