Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net中的两个用户控件之间传递数据_Asp.net - Fatal编程技术网

在asp.net中的两个用户控件之间传递数据

在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

我有一个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的代码隐藏中:

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.