Asp.net MVC没有找到扩展方法,尽管放入了Web.config

时间:2018-01-14 20:59:12

标签: c# asp.net asp.net-mvc razor

我创建了一个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。

0 个答案:

没有答案