Extension Method and Razor Page

喜你入骨 提交于 2019-12-19 09:00:10

问题


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


来源:https://stackoverflow.com/questions/5011678/extension-method-and-razor-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!