我创建了一个String扩展方法。它位于命名空间MyApp
下。它适用于所有C#类,但不适用于MVC Razor视图。
我尝试在<namespaces>
部分下添加一个和两个Web.config文件(在root中,一个是视图),但它只是找不到扩展方法。我尝试在<system.web>
和<system.web.webPages.razor>
部分下添加,但仍无效。
我正在使用MVC 3,.Net 4。
这是扩展名:
namespace MyApp
{
public static class StringExtension
{
// ...
[DebuggerStepThrough]
public static string FormatWith(this string target, params object[] args)
{
Check.Argument.IsNotEmpty(target, "target");
return string.Format(Constants.CurrentCulture, target, args);
}
}
}
这是web.config文件:
<namespaces>
<!-- The extension method is in this namespace: -->
<add namespace="MyApp" />
</namespaces>
和
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyApp" />
<add namespace="MyApp.Web" />
<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>
我不断得到的错误是:
'string'不包含'FormatWith'的定义,不包含 扩展方法'FormatWith'接受类型的第一个参数 可以找到'string'(你是否错过了使用指令或者 装配参考?)
我尝试在视图顶部添加@using MyApp
,但仍显示相同的错误。
我使用相同的方法在一个几乎相同的项目中使用了这个扩展,它工作正常。另一个项目是MVC 4和.net 4.5。