在asp.net中的两个用户控件之间传递数据
我有一个UC_Categories.ascx(UC_1),它约束categoryname。UC_Products.ascx(UC_2)将按类别名称显示产品。它们都位于名为BookShop.aspx(第页)的页面中 在页面中,当用户单击UC_1(步骤1)时,它将按类别名称呈现UC_2(步骤2)。我通过向页面发送带有categoryname参数的请求来处理步骤1。步骤2创建一个新的UC_2,设置属性值为categoryname,并执行FillProductByCategoryName方法。然后将UC_2添加到页面中的占位符中。但是我没有显示UC_2 我需要每个人的帮助或建议 谢谢你阅读我的问题! 我的英语不是很好 在UC2的代码隐藏中:在asp.net中的两个用户控件之间传递数据,asp.net,Asp.net,我有一个UC_Categories.ascx(UC_1),它约束categoryname。UC_Products.ascx(UC_2)将按类别名称显示产品。它们都位于名为BookShop.aspx(第页)的页面中 在页面中,当用户单击UC_1(步骤1)时,它将按类别名称呈现UC_2(步骤2)。我通过向页面发送带有categoryname参数的请求来处理步骤1。步骤2创建一个新的UC_2,设置属性值为categoryname,并执行FillProductByCategoryName方法。然后将UC
public void FillProduct()
{
ProductsMN productsMN = new ProductsMN();
if (dlBook == null)
{
dlBook = new DataList();
dlBook.DataSource = productsMN.GetByCategoryName(CategoryName);
dlBook.DataBind();
}
else
{
dlBook.DataSource = productsMN.GetByCategoryName(CategoryName);
dlBook.DataBind();
}
}
public string CategoryName { get; set; }
在页面的代码后面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
string categoryName = Request.QueryString["categoryName"] as string;
if (!string.IsNullOrWhiteSpace(categoryName))
{
BookContent.Controls.Clear(); // BookContent : Placeholder
Control c = Page.LoadControl("~/UC/UC_Books.ascx") as UC.UC_Books;
UC.UC_Books ucBook = new UC.UC_Books();
ucBook.CategoryName = categoryName;
ucBook.FillProduct(); //line 10
BookContent.Controls.Add(ucBook); //line 11
}
}
在页面的PageLoad处,useBook包含数据。但是在页面(视图)中,我看不到数据。我认为//line11不是execute或not true。您需要将UserControl控件的公共属性和构造函数公开到父页面 假设您的Usercontrol有一个标签:
<asp:Label ID="MyLabel" runat="server" visible="true"/>
假设您已将UserControl添加到父页面,其ID为“MyUserControl”
要将UserControl的标签值设置为某个值,请使用以下命令:
MyUserControl.Category.Text=Response.QueryString["categoryname"];//Obviously you would want to encode it first.
如果需要在UserControl的codebehind中调用父页面的函数,则必须使用委托。不过我不推荐这种方法。您尝试过公共财产吗?
MyUserControl.Category.Text=Response.QueryString["categoryname"];//Obviously you would want to encode it first.