ASP.NET在页面上注册来自外部dll的控件

时间:2009-10-17 16:45:52

标签: c# asp.net

今天我正撞着砖墙。我正在将我在旧盒子上开发的网站移植到新的开发环境中。我没有复制所有文件,因为我没有很好的文件结构,并且在我进行的过程中需要删除部分代码。

最初我创建了一个网站(文件 - >新 - >网站)。我想要一个类似的文件结构:

Popular folder structure for build

所以我创建了一个新的空白解决方案,因此sln文件是独立的,然后添加了项目(各种DLL项目),并且是ASP.NET Web应用程序。

这最后一部分似乎给我带来了一些令我头痛的问题。据我所知(这可能有点限制),网站(我第一次拥有)与我创建的后期类型不同。例如,App_Code文件夹部分不像以前那样工作。为了解决这个问题,我为webLibrary cs文件创建了一个单独的DLL,并添加了对它的引用。

我现在的问题是如何在页面上注册它以便能够使用其中的控件。例如,我有一个继承自TextBox的控件,当它在我可以使用的App_Code文件夹中时:

<%@ Register TagPrefix="sarg" Namespace="MyNameSpace" %> 

然后使用

<sarg:SARGTextBox id="clienttitletxtbox" runat="server" OnTextChanged="textboxfiltering_TextChanged" AutoPostBack="true"></sarg:SARGTextBox>

现在它在自己的DLL和命名空间中我无法弄清楚如何让它工作,我只是不断收到警告说“无法解析符号'SARGTextBox'”。

这可能很简单,但我再也看不到树木了。

由于

2 个答案:

答案 0 :(得分:3)

我认为您创建的是WebApplication而非网站。 WebApplication不支持App_Code。

  1. 添加您的ClassLibrary作为参考。
  2. 然后在web.config中注册您的控件。
  3.     <pages>
            <controls>
                <add tagPrefix="myctl" namespace="Namespace.ClassName" assembly="AsseblyName"/>
            </controls>
        </pages>
    
    1. 重建您的解决方案。
    2. 打开页面,从工具箱中找到您的控件并将其放在您的页面上,

答案 1 :(得分:3)

您需要指定声明控件的程序集:

<%@ Register TagPrefix="sarg" Namespace="MyNameSpace" Assembly="MyLibrary" %>