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.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 
11 public partial class _Default : System.Web.UI.Page 
12 {
13     protected void Page_Load(object sender, EventArgs e)
14     {
15         TabLoadControls();
16     }
17 
18 
19     #region 加载控件
20     private void TabLoadControls(int iChapterId, int iCourseID)
21     {
22         /*
23          *  第一种方法:这种方法能传值
24          *  这种写法需要在前台页面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx页面中加入这行代码:
25          * <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>
26          */
27         //清楚容器控件中的控件
28         //phCourseware.Controls.Clear();
29 
30         ASP.teachercenter_controls_chaptercourseware_ascx ucCourseware = new ASP.teachercenter_controls_chaptercourseware_ascx();
31         //给用户控件传值
32         ucCourseware.ChapterId = iChapterId;
33         ucCourseware.CourseID = iCourseID;
34         //加载用户控件至容器控件中
35         phCourseware.Controls.Add(ucCourseware);
36 
37 
38 
39         /*  
40          *  第二种,不需要传值的写法
41          *  这种写法不需要在前台页面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx页面中不需要这行代码:
42          * <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>
43          * 
44         */
45 
46         phCourseware.Controls.Add(TemplateControl.LoadControl("~/ChapterCourseware.ascx"));
47     }
48     #endregion
49 }

ChapterCourseware.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



原文地址:https://www.cnblogs.com/ajunForNet/p/2501481.html