我有ASPX頁面,在preinit我檢查whitch用戶控件加載。傳輸值到動態加載的網頁用戶控件
control = "~/templates/" + which + "/master.ascx";
然後在頁面加載,我加載控制
Control userControl = Page.LoadControl(control);
Page.Controls.Add(userControl);
如何可以傳輸動態加載的用戶控制,從ASPX到ASCX?
我有ASPX頁面,在preinit我檢查whitch用戶控件加載。傳輸值到動態加載的網頁用戶控件
control = "~/templates/" + which + "/master.ascx";
然後在頁面加載,我加載控制
Control userControl = Page.LoadControl(control);
Page.Controls.Add(userControl);
如何可以傳輸動態加載的用戶控制,從ASPX到ASCX?
您可以創建一個由實現的接口所有的自定義控件。這樣,您可以投射到該界面並使用它來傳遞您的數據。考慮下面這個例子:
public interface ICustomControl
{
string SomeProperty { get; set; }
}
...和你的控件:
public class Control1 : Control, ICustomControl
{
public string SomeProperty
{
get { return someControl.Text; }
set { someControl.Text = value; }
}
// ...
}
現在,你可以做這樣的事情:
Control userControl = Page.LoadControl(control);
Page.Controls.Add(userControl);
if (userControl is ICustomControl)
{
ICustomControl customControl = userControl as ICustomControl;
customControl.SomeProperty = "Hello, world!";
}
您可以使用Page.Findcontrol(...)獲取父頁面中的控件。
看到:http://msdn.microsoft.com/en-us/library/31hxzsdw.aspx
只要確保你設定的ID代碼,這樣你就可以訪問它。像:
Control userControl = Page.LoadControl(control);
userControl.ID = "ctlName";
Page.Controls.Add(userControl);
投在你的控制類的類型,你需要爲控件創建公共屬性(如果您想將數據傳輸到控制)
var userControl = (master)Page.LoadControl(control);
userControl.yourpublicproperty ="some text";
Page.Controls.Add(userControl);
完美! :) 謝謝 – 2012-04-20 19:06:18