簡體   English   中英

自定義服務器控件:繼承自Menu類,呈現方式以及呈現方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM