问题
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