2011-08-19 47 views
10

我正在從Infragistics中添加控件庫引用,以在我的ASP .NET MVC 3 Razor視圖中使用它們的控件。我已經添加了dll作爲項目的參考。在ASP.NET MVC中添加對視圖的引用

reference
reference properties

,如果我在文件的頂部添加using Infragistics.Web.Mvc我的控制器可以訪問該命名空間的罰款。

有兩種方法可以讓視圖包含名稱空間。首先是將@using Infragistics.Web.Mvc置於視圖的頂部。但是,如果我嘗試,我得到以下錯誤:

The type or namespace name 'Infragistics' could not be found (are you missing a using directive or an assembly reference?)

二是將呼叫添加到命名空間視圖Web.config文件的網頁部分是這樣的:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ABCABCABCABCABC" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     Other namespaces... 
     <add namespace="Infragistics.Web.Mvc"/> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

然而,這也不起作用。

我能得到它的工作的唯一辦法是通過添加以下行成根Web.config文件:

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     ... 
     <add assembly="Infragistics.Web.Mvc, Version=3.11.1.2010, Culture=neutral, PublicKeyToken=blahblahblah" /> 
     </assemblies> 
    </compilation> 

On some further investigation regarding Web.config,我發現,包括該行就告訴編譯器使用編譯ASP .NET資源時的資源。我不得不使用SN.exe來查找PublicKeyToken。

我在做什麼錯?

+0

你在Visual Studio項目中添加一個參考? – jzm

+0

是的,這就是我的意思是「我已經添加了dll作爲項目的參考」。 – link664

回答

21

我不知道該Infragistics的安裝如何或如何你運行你的網站,但你可能需要告訴Visual Studio中的DLL與網絡拷貝上構建,所以它包括項目。在探索太多其他選項之前,請務必檢查一下。

下面是一個例子

enter image description here

+1

就是這樣!將Copy Local設置爲true,然後刪除編譯標籤並使其工作。 :D – link664

+0

也爲我工作:-) –

+0

也爲我工作。但是你只能得到一個可用的控件列表。你如何去使用WebDropDown控件? – Shumii

1

不幸的是,你在這裏有一些奇怪的事情 - 因爲簡單地添加ref和包含名字空間的步驟足以讓它工作。

在我的應用程序中,我沒有web.config中的assemblies元素的條目,只有@using(例如MVC grid @using MvcContrib.UI.Grid),一切正常。我知道這對解決問題沒有多大幫助,但至少你知道這個「應該」是這樣工作的。

您在使用語句後也不需要分號。 當你添加ref到那個組件時,你是從哪個位置添加的?

+1

我在本地機器上的Program Files文件夾中添加了它。 – link664

4

看你的代碼並不看起來你已經把在web.config如下:

<pages> 
    <namespaces> 
    <add namespace="System.Web.Helpers" /> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="System.Web.WebPages" /> 

    ... 

    <add namespace="Infragistics.Web.Mvc" /> 
    </namespaces> 
</pages> 

這告訴你的視圖引擎(剃刀或其他人)也使用Infragistics的DLL作爲一個擴展。

如果您還使用Razor外觀來查看View \ web.config中的「namespace」標籤。如果您願意,您可以在那裏指定名稱空間。

希望它可以幫助

+0

如果我在視圖文件中使用「@using Infragistics.Web.Mvc」,我不需要在Web.config中包含名稱空間調用。放入命名空間使其在所有視圖中都可用。但是,在我的情況下,不用將命名空間放入或「@using」,也不需要進行彙編調用。 – link664

+0

如果這也行不通,也許是一個腐敗的infragistcs安裝? – Iridio

相關問題