2009-10-17 42 views
3

今天我正在撞墙砖头。我正在将一个旧盒子上开发的网站移植到新的开发环境中。我并没有复制所有的文件,因为我没有一个很好的文件结构,并且在我走时需要删除一些代码部分。ASP.NET在页面上注册了一个来自外部DLL的控件

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

Popular folder structure for build

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

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

我现在的问题是我如何在页面上注册,以便能够使用它中的控件。比如我有一个从文本框继承的控制,当它在App_Code文件夹中我可以使用:

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

然后使用

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

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

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

谢谢

+0

谢谢你们,你们都对,我更喜欢web.config解决方案,因为我只需要做一次。主要问题竟然是我!震惊恐怖,用户错误!谢谢 – Jon 2009-10-17 22:01:52

回答

3

我想你已经创建了一个WebApplication而不是网站。 WebApplication不支持App_Code。

  1. 添加您的ClassLibrary作为参考。
  2. 然后在web.config中注册您的控件。
 
    <pages> 
     <controls> 
      <add tagPrefix="myctl" namespace="Namespace.ClassName" assembly="AsseblyName"/> 
     </controls> 
    </pages> 
  • 重新生成溶液。
  • 打开页面,并从工具箱中找到你的控制和拖放您的网页上,
  • 3

    您需要指定控件声明集:

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