如何在VS2008中将用户控件构建到独立的程序集中?

时间:2009-07-21 19:56:28

标签: asp.net visual-studio-2008 user-controls web-applications

更具体地说,在Visual Studio 2008中,与VS2005不同,我需要了解什么?我在VS2005中找到了相当多的引用来做这种事情,比如

但即便是微软的参考资料似乎也没有多说VS2008。 这个问题源于我之前提到的found here

更进一步,一旦我设法构建其中一个程序集(可能是一个DLL),其他人需要对我的DLL做什么才能包含它(作为单个页面,或者可能是子部分)他们的ASP.NET网站?

编辑:更多的搜索已经出现this,这看起来很多(但不完全)就像我想要弄清楚的那样。之一:

  • 我为ASP.NET网站 Web应用程序编写代码,然后以某种方式将其交给主ASP.NET网站的所有者,或者
  • 我只编写应用程序的代码(从而创建用户控件),并且主ASP.NET网站的所有者以某种方式将我的用户控件推送到他们的站点。

我希望这能澄清我的要求。

3 个答案:

答案 0 :(得分:1)

我终于想出了如何做到我需要的东西。它的布局非常好here(尽管那篇文章声称适用于VS2005),但最后归结为几件事:

  1. 在ASP.NET网站内创建用户控件,而不是Web应用程序。
  2. 为用户控件声明提供包含自定义命名空间的类名称,如链接页面中步骤1的末尾所述。
  3. 编写并测试用户控件后,按步骤3
  4. 中所述创建DLL程序集
  5. 使用它,如步骤5中所述。
  6. 我之前遇到的最大问题是我在ASP.NET Web应用程序而不是Web站点中构建用户控件。我花了这么多时间来反对这一点,希望这个答案至少可以挽救其他一个新的ASP.NET开发人员节省时间和细微差别的时间。干杯!

答案 1 :(得分:0)

使用UserControl所需要做的就是在项目中添加对.dll的引用,无论是Web应用程序还是Web站点。

通常最好的想法是将其添加到相对于项目的文件夹中(我通常使用“_Libraries”),因为您需要将其部署到最终目的地。

修改

我想也许我误解了这个问题。 ASCX文件不易移植,因为UI布局包含在标记中,而不是代码中。

如果您希望用户控件是可分发的,则应通过在生命周期中将组件添加到usercontrol的Controls()集合(通常为Init()或CreateChildControls())来构建完全在代码中的布局。 ,或通过重写Render()方法。

然后,任何人都可以使用<@Register TagPrefix="mycontrols" namespace="My.UserControls" Assembly="My.UserControls" />指令添加一个用户控件,并使用<% mycontrols:mydropdownlist %> asp标记将其放入页面中。

答案 2 :(得分:0)

这看起来似乎是一个愚蠢的问题,但除了漂亮的设计时间界面之外,您将此作为用户控件获得了哪些好处,而不是(虽然更为复杂)编写server control的方法,这会给你你在这里要求的确切内容 - 一种部署控件的简单方法吗?

假设基于CSS的方法来显示控件,创建实际控件非常简单,使用面板作为容器(渲染为div),标签,文字等。

有些事情需要在控制生命周期的正确位置设置 - 例如您需要将标签的AssociatedControlId设置为输入控件的ClientID,但这不是在CreateChildControls中设置的,您需要稍后再设置它。