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