如何将值 - 循环 - 传递给用户控件

时间:2015-06-25 16:23:08

标签: c# asp.net user-controls

用于动态调用用户控件的页面代码。

    <%@ 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传递给我的用户控件 - 在我拥有的循环中?

1 个答案:

答案 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);
    }
}