代码之家  ›  专栏  ›  技术社区  ›  Jon

ASP.NET从页面上的外部dll注册控件

  •  3
  • Jon  · 技术社区  · 17 年前

    我今天把头撞在砖墙上。我正在将一个在旧盒子上开发的站点移植到一个新的开发环境。我并没有复制所有的文件,因为我并没有一个好的文件结构,一些代码部分需要删除。

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

    Popular folder structure for build

    这最后一部分似乎给我带来了一些让我头疼的问题。据我所知(这可能有点有限),一个网站(就像我最初创建的那样)与我后来创建的类型不同。例如,应用程序代码文件夹部分不能像以前那样工作。为了解决这个问题,我为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 回复  |  直到 6 年前
        1
  •  3
  •   Lee Taylor Dejan.S    6 年前

    我认为您创建了一个Web应用程序而不是网站。WebApplication不支持应用程序代码。

    1. 将类库添加为引用。
    2. 然后在web.config中注册控件。
        <pages>
            <controls>
                <add tagPrefix="myctl" namespace="Namespace.ClassName" assembly="AssemblyName"/>
            </controls>
        </pages>
    
    1. 重建您的解决方案。
    2. 打开页面,从工具箱中找到控件并将其放到页面上,
        2
  •  3
  •   Thomas Levesque    17 年前

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