[英]dynamically load a user control in the aspx page
我有以下aspx頁面,例如:名為choosemenu.aspx
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<div id="renderhere" runat="server">render user control here </div>
</form>
</body>
</html>
我有一個稱為的ascx頁面列表
english.ascx
commerce.ascx
maths.ascx
我必須根據aspx頁中的querystring動態加載aspx頁中的ascx文件。
我在page_load事件的aspx頁面中具有以下內容。
var control = (English)Page.LoadControl("/ascx/english.ascx");
我將如何在choicemenu.aspx中呈現english.ascx頁面的內容,該內容也在此標記中
另外,我還必須在ascx文件中傳遞一些值。 這是靜態的東西。
<Menu:MNU ID="english" runat="server" HiLiter="<%#h %>"></Menu:MNU>
從服務器端加載控件
protected void Page_Load(object sender, EventArgs e)
{
Page.Controls.Add(Page.LoadControl("~/ascx/english.ascx")); //CHECK THE PATH
}
從服務器端加載控件並將其呈現到div中如果要在特定的div
呈現它,則可以編寫:
protected void Page_Load(object sender, EventArgs e)
{
UserControl uc = (UserControl)Page.LoadControl("~/ascx/english.ascx");
uc.MyParameter = 1;
uc.Id = 2;
uc.someMethodToInitialize();
div1.Controls.Add(uc);
}
並在您的aspx
頁面中:
<div id="div1" runat="server">
</div>
從服務器端加載控件,並使用參數初始化控件
如果control
具有帶parameters
的constructor
parameters
,則必須使用:
public English_Control(int MyParameter,int Id){//在這里編碼。
在aspx.cs
文件中,您可以使用以下命令進行初始化:
UserControl uc = (UserControl)Page.LoadControl(typeof(English_Control), new object[] {1, 2});
div1.Controls.Add(uc);
為了使控件的回發值可用,必須不遲於PreInit加載和重新加載它。 這是您需要執行的代碼。
protected override void OnPreInit(EventArgs e)
{
string controlToLoad = String.Empty;
//logic to determine which control to load
UserControl userControl = (UserControl)LoadControl(controlToLoad);
renderhere.Controls.Add(userControl);
base.OnPreInit(e);
}
根據MSDN :
用於“創建或重新創建動態控件”的Pre-Init事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.