隐藏

在C#中用户控件(.ascx)与网页间(.aspx)是如何传值的?

发布:2023/1/3 16:14:54作者:管理员 来源:本站 浏览次数:529

1.aspx文件:

public void SetLabel(string str)

{

      this.Label1.Text = str; ;

}

ascx文件;

protected void Button1_Click(object sender, EventArgs e)

{

      System.Web.UI.Page p = this.Page;

      Type pageType = p.GetType();

      MethodInfo mi = pageType.GetMethod("SetLabel");

      mi.Invoke(p, new object[] { "你这个大猪猪!" });


}


2. 在自定义控件中定义这个控件的属性

public Control LabelText

{

  get{return this.Label1.Text;}

}


3用FindControl方法寻找

Label lbl = (Label)WebUserControl1.FindControl("Label1");


aspx 页面与ascx用户控件传值的问题


1.建立ascx控件


2.给ascx加上属性


3.将控件拖入aspx中


4.在aspx的代码中按控件ID访问属性


如: <uc3:left_Repassword ID="left_Repassword1" runat="server" />


left_Repassword1.HighLight = value;


也同样适用于master页面访问ascx


-----------------------------------------------------------------------


//****ascx用户控件中,定义一个要接收参数的属性

public partial class front_search : System.Web.UI.UserControl

{

   private int m_nFirstSortID; // 一级分类的ID,用于aspx传值进来

   public int FirstSortID

   {

       get { return m_nFirstSortID; }

       set { m_nFirstSortID = value; }

   }


   private int m_nSecondSortID; // 二级分类的ID

   public int SecondSortID

   {

       get { return m_nSecondSortID; }

       set { m_nSecondSortID = value; }

   }


}


// aspx页面,定义ascx的地方


<%@ Register TagPrefix="MySearch" TagName="Search" Src="~/front_search.ascx" %>


<td align="left">

<MySearch:Search runat="server" ID="Search1" />

</td>


// 进行传值


   protected void Page_Load(object sender, EventArgs e)

   {

       if (!IsPostBack)

       {

           int nFirstSortID = RequestUtil.GetInt(Request, "first_sort_id", 0);

           int nSecondSortID = RequestUtil.GetInt(Request, "second_sort_id", 0);


           Search1.FirstSortID = nFirstSortID;

           Search1.SecondSortID = nSecondSortID;

       }

   }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuliu20036/archive/2009/06/07/4250280.aspx

ASP.Net访问母版页(MasterPage)控件、属性、方法及母版页中调用内容页的方法


总结了一下ASP.Net访问母版页(master)控件、属性、方法及母版页中调用内容页(aspx)的方法,供大家参考:


首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令


<%@ MasterType VirtualPath="~/Master/MenuElement.master" %>


其中VirtualPath设置母版页URL地址。


1.     获取母版页控件引用。


示例代码


   /// <summary>


   /// 获取对母板页中一个TreeView控件的引用


   /// </summary>


   public TreeView ElementStructureTree


   {


       get


       {


           return tvElementStructure;


       }


       set


       {


           tvElementStructure = value;


       }


    }


如上代码所示,在母版页中定义一个公共属性ElementStructureTree,该属引用了母版页中tvElementStructure控件,然后在内容页中就可以通过公共属性Master(核心对象Page的一个属性)来引用母版页中tvElementStructure控件,如下:


                           TreeView tv = Master.ElementStructureTree;


2.     访问母版页属性。


母版页中的属性一般有三种:值类型、类类型、控件类型,上面的“获取母版页控件引用”实际上就是访问控件类型属性,其它两种类型的属性可以用同样的方法访问。


3.     调用母版页方法。


母版页中定义的公共方法可以通过Master直接调用。


4.     母版页中调用内容页的方法。


母版页中定义委托:


public delegate void ElementSelectedChangeHandler();


母版页中实例化委托(又是一个属性):


public ElementSelectedChangeHandler ElementSelectedChange { private get; set; }


在母版页中需要的地方调用委托:


if (ElementSelectedChange != null)


       {


           ElementSelectedChange();


       }


内容页中指定一个与委托签名匹配的方法:


Master.ElementSelectedChange = this.ElementSelectedChange;


5.      Master页的AutoEventWireup属性一定要设置为"true",才会自动触发Master页中控件的所有事件。