ASP.NET中動態加載用戶控件並傳值

ASP.NET 頁面:在此頁面動態調用用戶控件(.ASCX)

  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2.  
  3. <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>  
  4.  
  5. <head runat="server">  
  6.     <title>無標題頁</title>  
  7. </head>  
  8. <body>  
  9.     <form id="form1" runat="server">  
  10.     <div id="info_1">  
  11.         <asp:PlaceHolder runat="server" ID="phCourseware"></asp:PlaceHolder>  
  12.     </div>  
  13.     </form>  
  14. </body>  
  15. </html> 

ASP.NET 後臺代碼:
 

  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.  
  9. namespace WebControl.UserControl  
  10. {  
  11.     public partial class TestDefault : System.Web.UI.UserControl  
  12.     {
  13. protected void Page_Load(object sender, EventArgs e)  
  14.      {  
  15.          /*  
  16.           *  第一種方法:這種方法能傳值  
  17.           *  這種寫法需要在前臺頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中加入這行代碼:  
  18.           * <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>  
  19.           */ 
  20.          //清楚容器控件中的控件  
  21.          //phCourseware.Controls.Clear();  
  22.    TestUserControl TestControl= (TestUserControl)LoadControl("TestUserControl.ascx"); //TestUserControl 是自定義用戶控件的類,注意:Morhigh是自定義用戶控件命名空間,不能忘記,否則就找不到用戶控件的屬性。
  23.          //給用戶控件傳值  
  24.          TestControl.Id = "id" + IntID; //自定義用戶控件加載到aspx頁面上的ID;  
  25.          TestControl.CourseID = iCourseID; //向自定義用戶控件 Model 屬性賦值。 
  26.          //加載用戶控件至容器控件中  
  27.          phCourseware.Controls.Add(ucCourseware);  
  28.  
  29.  
  30.  
  31.          /*    
  32.           *  第二種,不需要傳值的寫法  
  33.           *  這種寫法不需要在前臺頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中不需要這行代碼:  
  34.           * <%@ Register Src="TestUserControl.ascx" TagName="TestUserControl" TagPrefix="uc2" %>  
  35.           *   
  36.          */ 
  37.  
  38.          phCourseware.Controls.Add(TemplateControl.LoadControl("~/TestUserControl.aspx"));  
  39.      }  
  40.     }  

TestUserControl.ascx 控件的後臺代碼中寫入屬性以用於接收參數:

  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.  
  17.     /// <summary>  
  18.     /// 章節ID  
  19.     /// </summary>  
  20.     public int ChapterId  
  21.     {  
  22.         get 
  23.         {  
  24.             if (ViewState["ChapterId"] != null)  
  25.                 return Convert.ToInt32(ViewState["ChapterId"]);  
  26.             else 
  27.                 return -1;  
  28.         }  
  29.         set 
  30.         {  
  31.             ViewState["ChapterId"] = value;  
  32.         }  
  33.     }  
  34.     #endregion 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章