2011-08-04 60 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