我想实现如下功能:一个.ascx,其中有一个PlaceHolder容器,想在另一个.aspx文件中用代码先加载.ascx文件,然后再往容器里添加Label控件,该如何实现,最好帖上源码.

解决方案 »

  1.   

    vb.netwebusercontrol1.ascx<%@ Control Language="vb" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.vb" Inherits="aspdotnet.WebUserControl1" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
    <asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>temp_.aspxUI<%@ Register TagPrefix="uc1" TagName="WebUserControl1" Src="WebUserControl1.ascx" %>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="temp_.aspx.vb" Inherits="aspdotnet.temp_"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>temp_</title>

    </HEAD>
    <body MS_POSITIONING="FlowLayout">
    <form id="Form1" method="post" runat="server">
    <P>
    <uc1:WebUserControl1 id="WebUserControl11" runat="server"></uc1:WebUserControl1></P>
    <P>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
    </form>
    </body>
    </HTML>temp_.aspx.vb
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim lab As New Label
            lab.Text = "抵制日货"
            lab.ID = "lab0"
            Dim uc As UserControl = CType(Page.FindControl("WebUserControl11"), UserControl)
            CType(uc.FindControl("PlaceHolder1"), PlaceHolder).Controls.Add(lab)    End Sub
      

  2.   

    private void Button2_Click(object sender, System.EventArgs e)
    {
    WebUserControl wuc=(WebUserControl)Page.FindControl ("WebUserControl1");
    Label l=new Label ();
    l.Text ="this is a test";
    wuc.PlaceHolder1.Controls .Add (l);
        }另外,还需改动的的地方把ASCX文件中的protected System.Web.UI.WebControls.PlaceHolder PlaceHolder1;中的protected 改为public,
      

  3.   

    我是这样想的,在一个站点里只用一个显示提示的页,该页作成一个.ascx文件,页面上放一个placeholder(用来显示提示信息),然后在类文件中写一个函数来加载这个控件,并在加载过程中,给Placeholder加载一个label显示提示信息,由于初学.Net,不知道这个想法好不好,也实现不了,希望大家多多指点.
      

  4.   

    你的控件应该有一个属性接受待显示的业务对象。至于ui(例如“加载一个label”),控件自己完成,与外界无关。
      

  5.   

    youcontrol mm = Page.LoadControl("/youcontrol.asxc");
    //设置mm
    PlaceHolder.Controls.Add(mm);