2011-08-19 45 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

相关问题