2011-08-04 62 views
0

我遇到了UrlHelper类的扩展问题,因为它们没有被拾取。到目前为止,我已经完成了以下工作:剃刀导入命名空间

1)将命名空间添加到位于Views文件夹中的web.config中的部分。我也将它们添加到主web.config中以确保。

<system.web.webPages.razor>

2)确信,在的csproj文件System.Web.Mvc参考是MVC3。我还确保包含System.Web.WebPages和System.Web.Helpers参考。

3)确保csproj ProjectTypeGuids正确。

{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

4)经过该bindingRedirect指向MVC3。

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

我错过了什么,因为谷歌没有提出任何不同的东西?

的代码如下(与非相关的东西剥离出来):

namespace MyNameSpace.Controllers.Extensions 
{ 
    using System.Web.Mvc; 
    using System.Web.Routing; 

    using Contracts.Entities; 
    using Controllers.Routing; 

    public static class UrlHelperExtensions 
    { 
     public static string BrowseLink(this UrlHelper urlHelper, ICategory category) 
     { 
      var routeValueDictionary = new RouteValueDictionary 
       { 
        { "categorypath", BrowsePath.Serialize(catagory) }, 
        { "pagenumber", "1" } 
       }; 

      return urlHelper.Action("Index", "Browse", routeValueDictionary); 
     } 
    } 
} 
+0

是否在“Web.Config”中为'节添加了引用'? – Eranga

+0

对不起,这就是我要说的第一点,谢谢 – Chewy

回答

0

在视图下的Web.config文件夹添加到这一点:

<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="NAMESPACE OF YOUR EXTENSION CLASS" /> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 

和卸载/重装该项目。如果问题仍然存在,只需在cshtml或vbhtml页面顶部使用@using指令并导入您的扩展类。顺便说一下,当你说“UrlHelper的扩展”时,我知道你只是有一个静态类,其方法有this UrlHelper helper作为第一个参数。如果是这种情况,请首先使用@using指令查看它是否在cshtml中运行,然后尝试添加到web.config中

+0

是的,我完成了第一部分的第一部分 - 我应该澄清一点。 UrlHelper方法与您所描述的一样,我尝试添加'@ using'语句但没有成功。 – Chewy

+0

你可以粘贴你的助手类吗?可能有些东西是非帮助的,这就是为什么我怀疑它不起作用 - 即使在使用“@ using”时也是如此。 – Zasz

+0

我的错误 - 从我调用'@ UrlHelper.BrowseLink(...)'而不是'@ Url.BrowseLink(...) – Chewy