天天看點

ASP.NET中動态加載使用者控件并傳值

ASP.NET 頁面:在此頁面動态調用使用者控件(.ASCX)

  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2. <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>  
  3. <head runat="server">  
  4.     <title>無标題頁</title>  
  5. </head>  
  6. <body>  
  7.     <form id="form1" runat="server">  
  8.     <div id="info_1">  
  9.         <asp:PlaceHolder runat="server" ID="phCourseware"></asp:PlaceHolder>  
  10.     </div>  
  11.     </form>  
  12. </body>  
  13. </html> 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Web;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. namespace WebControl.UserControl  
  9. {  
  10.     public partial class TestDefault : System.Web.UI.UserControl  
  11.     {
  12. protected void Page_Load(object sender, EventArgs e)  
  13.      {  
  14.          /*  
  15.           *  第一種方法:這種方法能傳值  
  16.           *  這種寫法需要在前台頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中加入這行代碼:  
  17.           * <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>  
  18.           */ 
  19.          //清楚容器控件中的控件  
  20.          //phCourseware.Controls.Clear();  
  21.    TestUserControl TestControl= (TestUserControl)LoadControl("TestUserControl.ascx"); //TestUserControl 是自定義使用者控件的類,注意:Morhigh是自定義使用者控件命名空間,不能忘記,否則就找不到使用者控件的屬性。
  22.          //給使用者控件傳值  
  23.          TestControl.Id = "id" + IntID; //自定義使用者控件加載到aspx頁面上的ID;  
  24.          TestControl.CourseID = iCourseID; //向自定義使用者控件 Model 屬性指派。 
  25.          //加載使用者控件至容器控件中  
  26.          phCourseware.Controls.Add(ucCourseware);  
  27.          /*    
  28.           *  第二種,不需要傳值的寫法  
  29.           *  這種寫法不需要在前台頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中不需要這行代碼:  
  30.           * <%@ Register Src="TestUserControl.ascx" TagName="TestUserControl" TagPrefix="uc2" %>  
  31.           *   
  32.          */ 
  33.          phCourseware.Controls.Add(TemplateControl.LoadControl("~/TestUserControl.aspx"));  
  34.      }  
  35.     }  
  1. #region 頁面參數  課程ID:CourseID  章節ID:ChapterId  
  2.     /// <summary>  
  3.     /// 課程ID  
  4.     /// </summary>  
  5.     public int CourseID  
  6.     {  
  7.         get 
  8.         {  
  9.             return (int)ViewState["CourseID"];  
  10.         }  
  11.         set 
  12.         {  
  13.             ViewState["CourseID"] = value;  
  14.         }  
  15.     }  
  16.     /// <summary>  
  17.     /// 章節ID  
  18.     /// </summary>  
  19.     public int ChapterId  
  20.     {  
  21.         get 
  22.         {  
  23.             if (ViewState["ChapterId"] != null)  
  24.                 return Convert.ToInt32(ViewState["ChapterId"]);  
  25.             else 
  26.                 return -1;  
  27.         }  
  28.         set 
  29.         {  
  30.             ViewState["ChapterId"] = value;  
  31.         }  
  32.     }  
  33.     #endregion