ASP.NET 頁面:在此頁面動態調用用戶控件(.ASCX)
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>
- <head runat="server">
- <title>無標題頁</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div id="info_1">
- <asp:PlaceHolder runat="server" ID="phCourseware"></asp:PlaceHolder>
- </div>
- </form>
- </body>
- </html>
ASP.NET 後臺代碼:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- namespace WebControl.UserControl
- {
- public partial class TestDefault : System.Web.UI.UserControl
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- /*
- * 第一種方法:這種方法能傳值
- * 這種寫法需要在前臺頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中加入這行代碼:
- * <%@ Register Src="ChapterCourseware.ascx" TagName="ChapterCourseware" TagPrefix="uc2" %>
- */
- //清楚容器控件中的控件
- //phCourseware.Controls.Clear();
- TestUserControl TestControl= (TestUserControl)LoadControl("TestUserControl.ascx"); //TestUserControl 是自定義用戶控件的類,注意:Morhigh是自定義用戶控件命名空間,不能忘記,否則就找不到用戶控件的屬性。
- //給用戶控件傳值
- TestControl.Id = "id" + IntID; //自定義用戶控件加載到aspx頁面上的ID;
- TestControl.CourseID = iCourseID; //向自定義用戶控件 Model 屬性賦值。
- //加載用戶控件至容器控件中
- phCourseware.Controls.Add(ucCourseware);
- /*
- * 第二種,不需要傳值的寫法
- * 這種寫法不需要在前臺頁面中拖拽控件ChapterCourseware.ascx,也就是在Default.aspx頁面中不需要這行代碼:
- * <%@ Register Src="TestUserControl.ascx" TagName="TestUserControl" TagPrefix="uc2" %>
- *
- */
- phCourseware.Controls.Add(TemplateControl.LoadControl("~/TestUserControl.aspx"));
- }
- }
- }
TestUserControl.ascx 控件的後臺代碼中寫入屬性以用於接收參數:
- #region 頁面參數 課程ID:CourseID 章節ID:ChapterId
- /// <summary>
- /// 課程ID
- /// </summary>
- public int CourseID
- {
- get
- {
- return (int)ViewState["CourseID"];
- }
- set
- {
- ViewState["CourseID"] = value;
- }
- }
- /// <summary>
- /// 章節ID
- /// </summary>
- public int ChapterId
- {
- get
- {
- if (ViewState["ChapterId"] != null)
- return Convert.ToInt32(ViewState["ChapterId"]);
- else
- return -1;
- }
- set
- {
- ViewState["ChapterId"] = value;
- }
- }
- #endregion