[英]Custom Server Control: Inherited from Menu class, how and exactly what to render
我為所有應用程序構建了一個自定義控件,該控件將使用相應應用程序的名稱來呈現菜單,並登錄用戶角色並相應地呈現菜單。 我正在使用一個已編寫的javascript渲染菜單,該菜單從db以包含div和無序列表的html字符串的形式從數據庫加載。 現在,要解決原始問題,以前我用Panel類繼承了控件,該類在html中呈現為div,我只是將生成的HTML編寫在繼承的panel容器中。 現在,我想將控件與已經具有站點地圖的網站集成在一起。 為此,我從Menu類繼承了控件,現在我很困惑如何呈現html菜單。 下面粘貼了我以前如何渲染的代碼。
[DefaultProperty("Text")]
[ToolboxData(@"<{0}:MenuControl runat=""server"" \>")]
public class MenuControl : Panel
{
.
.
.
.
.
#region Loading Resources On PreRender
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (string.IsNullOrEmpty(this.DataSourceID))
{
ClientScriptManager cs = this.Page.ClientScript;
#region Loading JavaScript File(s)
#endregion
#region Loading CSS File(s)
#endregion
#region Loading Image(s)
#endregion
}
}
#endregion
#region Rendering Final Contents
protected override void RenderContents(HtmlTextWriter output)
{
string Menus = string.Empty;
//Where as Menus contain menu in an html structure of ordered list.
Menus = GetMenuForAppOnUser();
output.Write(Menus);
}
#endregion
.
.
.
.
}
現在,由於它是與Panel一起繼承的,所以我只需要在繼承的panel(div)內編寫一些html。 現在,當MenuMenu繼承自Menu類時,我該怎么寫。
找到解決方案后,對於Menu, Render實際上渲染控件,而不是面板渲染 RenderContents 。
#region Rendering Final Contents
protected override void Render(HtmlTextWriter output)
{
string Menus = string.Empty;
//Where as Menus contain menu in an html structure of ordered list.
Menus = GetMenuForAppOnUser();
output.Write(Menus);
}
#endregion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.