用于动态调用用户控件的页面代码。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestUC.aspx.cs" Inherits="TestUC" %>
<%@ Register TagPrefix="UC" TagName="TestUC" Src="NCCsByRole.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Placeholder runat="server" ID="PlaceHolder1"></asp:Placeholder>
</div>
</form>
</body>
</html>
此页面背后的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TestUC : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
UserControl myUserControl = (UserControl)LoadControl("TeamsByRole.ascx");
//myUserControl.UserID = i; ******************** NOT WORKING
PlaceHolder1.Controls.Add(myUserControl);
}
}
}
用户控件的代码。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TeamsByRole.ascx.cs" Inherits="TeamsByRole" %>
<asp:Literal ID="ltlName" runat="server"></asp:Literal>
用户控件背后的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TeamsByRole : System.Web.UI.UserControl
{
private int _UserID;
public int UserID
{
get { return _UserID; }
set { _UserID = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
string myName = "Angela";
ltlName.Text = "<p>" + myName + "</p>";
}
}
因此,我有一个页面,其中包含对用户控件的引用。我想动态调用该用户控件,我需要将一个UserID从页面传递给用户控件,因为我循环访问一些数据。在我上面的示例代码中,我从0循环到4并且用户控件被称为&#39; 5次 - 作为名称&#39; Angela&#39;被写入屏幕5次。
但是,如何将UserID(在循环中)传递给UserControl?我在用户控件中有UserID的公共属性,但是在调用&#39;的页面中。用户控制 - 如果我在行中评论......
myUserControl.UserID = i;
报告错误...&#39; System.Web.UI.UserControl&#39;不包含&#39; UserID&#39;的定义并且没有扩展方法&#39; UserID&#39;接受类型&#39; System.Web.UI.UserControl&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
如何将UserID传递给我的用户控件 - 在我拥有的循环中?
答案 0 :(得分:0)
您将控件转换为UserControl
,但UserID
未声明UserControl
。相反,它是TeamsByRole
的成员,这是你应该投的。
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
TeamsByRole myUserControl = (TeamsByRole)LoadControl("TeamsByRole.ascx");
myUserControl.UserID = i;
PlaceHolder1.Controls.Add(myUserControl);
}
}