我正在尝试为WebViewPage类创建扩展方法,以便能够在我的.cshtml文件中调用@Foo()。 我几乎可以肯定以下代码应该可以工作,但它不会......
我正在使用System.Web.Mvc,所以我认为这也不是命名空间问题。
namespace System.Web.Mvc
{
public static class WebViewPageExtensions
{
public static void Foo(this System.Web.Mvc.WebViewPage view)
{
//do something...
}
}
}
注意:我也尝试使用自定义的WebViewPage类来完成此操作,但是我想了解为什么我不能使用扩展方法。
由于
答案 0 :(得分:1)
也许是一个迟到的答案,但你应该能够在你的cshtml文件中调用@ this.Foo()。
答案 1 :(得分:0)
您是否在web.config中为webviewpages声明了程序集?
<assemblies>
<add assembly="YourAssembly, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
答案 2 :(得分:0)
首先,您应该创建自己的WebViewPage
public abstract class MyWebViewPage : System.Web.Mvc.WebViewPage
{
public Foo F
{
//do something...
}
}
然后将其添加到web.config
部分的<system.web.webPages.razor>
中:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="[your custom webview class with namespace,ex: myproject.utiles.MyWebViewPage ]">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
然后您可以在所有视图中轻松使用@foo