這個問題可能已經被問到,但我找不到任何引用它,所以我道歉,如果它看起來像一個重複的問題。帶有HTML內容佔位符的ASP.NET Generic UserControl
我想要做的是創建一個通用的DialogBox
作爲ASP.NET UserControl;其中將包含使用jQuery
創建對話框所需的所有腳本。該對話框有一組固定的按鈕,但我希望能夠讓用戶在創建對話框時定義內容。假設這是用戶控件的標記:
<head>
<script type="text/javascript">
// jQuery script to create the dialog
</script>
</head>
<body>
<div runat="server" id="divContainer">
<!--Html Content Placeholder. What goes here?-->
</div>
</body>
和代碼隱藏:
[ParseChildren(true, "Contents")]
public partial class UCDialogBox : ExtendedUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
public List<Control> Contents { get; set; }
public DialogType Type { get; set; }
public string Title { get; set; }
}
和註冊控制後的實際頁面上,我想能夠做到這樣的事情:
<uc:DialogBox runat="server">
<div>
<label>Hello World</label>
</div>
</uc:DialogBox>
這個問題是,List<Control>
只允許ASP.NET控件。普通的HTML控件(比如我上面的)不起作用。
問題1:我應該使用什麼類型來允許任何HTML控件嵌套在用戶控件中?我試過System.Web.UI.HtmlControls.HtmlControl
,但是這也沒有奏效(ASP.NET說The element 'div' cannot be nested within the element 'dialogbox'
)。
問題2我會把爲用戶控件的HTML內容佔位符可以是勢必對後面的代碼Contents
財產?類似於
<SomePlaceholderControl DataSource="<%# Contents %>" />
任何幫助表示讚賞。
重寫'Render()'的問題是頁面上還有其他控件,我不想強制手動進行渲染。使用'List'確實有效,只是設計師對此抱怨。雖然謝謝! –
PoweredByOrange
2014-09-03 21:24:37