Visual Studio 2008,C#,ASP.NET
需要以编程方式创建Web用户控件的多个副本(或实例)。
我有UserControlFile.ascx,其中包含 asp:标签,ID =" vhLabel "在里面。 在该文件中,我像往常一样通过公共字符串 vhText 变量设置标签的Text属性:
public string vhText
{
set
{
vhLabel.Text = value;
}
}
此文件中还有一些div和其他html数据无法以编程方式在C#中创建,因此我必须使用ascx文件。
现在,在代码隐藏文件中,我需要:
请分享您对这些问题的建议。如果您需要,我可以在这里显示我的代码。 我一直在寻找答案,但仍然不成功。
答案 0 :(得分:0)
您需要使用LoadControl方法:
MyUserControl control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "first control";
Page.Controls.Add(control);
control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "second control";
Page.Controls.Add(control);
control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "third control";
Page.Controls.Add(control);
答案 1 :(得分:0)
您可以在此处找到有关如何以编程方式向页面添加用户控件的演练:http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx
在您的情况下,UserControlFile.ascx
控件中需要这样的内容(className
属性是重要的一点):
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserControlFile.ascx.cs" Inherits="UserControlFile" className="MyUserControl" %>
<asp:Label ID="vhLabel" runat="server"></asp:Label>
然后,在页面顶部将包含控件(更改适合您结构的文件路径):
<%@ Reference Control="~/Controls/UserControlFile.ascx" %>
最后,页面后面的代码将包含通过LoadControl
方法以编程方式添加控件实例的代码以及MyUserControl
类型的使用 - 在{{1}中定义上面的@Control指令中的}属性:
className
那应该指出你正确的方向......