• 支持在控件标签间包含子控件 WebControl


    之前写过关于UserControl的文章http://www.cnblogs.com/coolkiss/archive/2010/09/07/1820467.html

    但是manager说UserControl复用性不好,于是改用WebControl了,改的过程遇到一些问题。

    其中最主要的问题就是控件标签间 包含子控件,或者asp.net 页面变量的问题。

    我希望实现的功能是,在控件间可以包含子控件

    <cc:TitleEx runat="server">

    <asp:Literal ID="litStr" runat="server"/>

    </cc:TitleEx>

    同时还要满足

    <cc:TitleEx runat="server">

    <%="hi"%>

    </cc:TitleEx>

    同时也可以这样使用:

    <cc:TitleEx runat="server">

    <% Response.Write("str");%>

    </cc:TitleEx>

       [ParseChildren(false), PersistChildren(true), AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
        public class TitleEx : WebControl
        {
            public TitleEx()
                : base(HtmlTextWriterTag.Div)
            {
            }
    
            #region Attribute
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string CssStyle
            {
                get
                {
                    String s = (String)ViewState["CssStyle"];
                    return ((s == null) ? String.Empty : s);
                }
                set
                {
                    ViewState["CssStyle"] = value;
                }
            }
    
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string CloseFunction
            {
                get
                {
                    String s = (String)ViewState["CloseFunction"];
                    return ((s == null) ? String.Empty : s);
                }
                set
                {
                    ViewState["CloseFunction"] = value;
                }
            }
    
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string DemoUrl
            {
                get
                {
                    String s = (String)ViewState["DemoUrl"];
                    return ((s == null) ? String.Empty : s);
                }
                set
                {
                    ViewState["DemoUrl"] = value;
                }
            }
    
    
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
            public string Text
            {
                get
                {
                    String s = (String)ViewState["Text"];
                    return ((s == null) ? String.Empty : s);
                }
                set
                {
                    if (this.HasControls())
                    {
                        this.Controls.Clear();
                    }
                    ViewState["Text"] = value;
                }
            }
    
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string HelpUrl
            {
                get
                {
                    String s = (String)ViewState["HelpUrl"];
                    return ((s == null) ? String.Empty : s);
                }
                set
                {
                    ViewState["HelpUrl"] = value;
                }
            }
    
            #endregion
    
            protected override void AddAttributesToRender(HtmlTextWriter writer)
            {
                base.AddAttributesToRender(writer);
                writer.AddAttribute(HtmlTextWriterAttribute.Id, "divtitle");
                if (CssStyle != null)
                {
                    string strStyle = CssStyle;
                    writer.AddAttribute(HtmlTextWriterAttribute.Style, strStyle);
                }
            }
    
            public override void RenderBeginTag(HtmlTextWriter writer)
            {
                this.AddAttributesToRender(writer);
                HtmlTextWriterTag tagKey = this.TagKey;
                if (tagKey != HtmlTextWriterTag.Unknown)
                {
                    writer.RenderBeginTag(tagKey);
                    writer.Write(GetOutputHtmlBegin());
                }
                else
                {
                    writer.RenderBeginTag(this.TagName);
                }
            }
    
            public override void RenderEndTag(HtmlTextWriter writer)
            {
                writer.Write(GetOutputHtmlEnd());
                base.RenderEndTag(writer);
            }
    
            #region get output html
            protected string GetOutputHtmlBegin()
            {
                StringBuilder sbHtml = new StringBuilder();
                sbHtml.AppendLine("<table width='100%' cellpadding=0 cellspacing=0 border=0 class='EMRTitle'>");
                sbHtml.AppendLine("<tr>");
                sbHtml.AppendLine("<td width='10%' align='left' class='EMRTitle'></td>");
                sbHtml.AppendLine("<td width='90%' align='left' class='EMRTitle'>");
    
                return sbHtml.ToString();
            }
    
            protected string GetOutputHtmlEnd()
            {
                StringBuilder sbHtml = new StringBuilder();
                sbHtml.Append("</td>");
                sbHtml.AppendLine("<td width=80 align='right' valign='top' nowrap>");
                if (!string.IsNullOrEmpty(DemoUrl) && DemoUrl.IndexOf("HTTP") == -1)
                {
                    DemoUrl = "http://www.oooo.com/help/video/" + DemoUrl;
                }
                if (!string.IsNullOrEmpty(DemoUrl) && DemoUrl.Length > 0)
                    sbHtml.AppendLine("<a href=\"javascript:\" onclick=\"javascript:pop('" + DemoUrl + "','',750,750);\">	<img src='https://img.oooo.com/ec/images/icon_viewdemo.gif' border=0 title='View Online Demo' style='visibility: visible;'/></a>");
                if (!string.IsNullOrEmpty(HelpUrl) && HelpUrl.Length > 0)
                    sbHtml.AppendLine("<a href=\"javascript:\" onclick=\"javascript:pop('" + HelpUrl + "','',750,750);\">	<img src='https://img.oooo.com/ec/images/icon_help_small.gif' border=0 title='View help document' style='visibility: visible;'/></a>");
    
                if (!string.IsNullOrEmpty(CloseFunction) && CloseFunction.Length > 0)
                {
                    sbHtml.AppendLine("  <a href=\"javascript:" + CloseFunction + "\"><img src='https://img.oooo.com/ec/images/button_close.gif' border=0 title='Close'></a>");
                }
                sbHtml.AppendLine("</td>");
                sbHtml.AppendLine("</tr>");
                sbHtml.AppendLine("</table>");
                return sbHtml.ToString();
            }
            #endregion
        }
    
    
  • 相关阅读:
    聊聊CMDB的前世今生
    我是如何走上运维岗位的?谈谈新人入职运维发展的注意事项
    如何从生命周期的视角看待应用运维体系建设?
    标准化体系建设(下):如何建立基础架构标准化及服务化体系?
    标准化体系建设(上):如何建立应用标准化体系和模型?
    微服务架构时代,运维体系建设为什么要以“应用”为核心?
    Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL
    Etcd常用运维命令
    Logstash生产环境实践手册(含grok规则示例和ELKF应用场景)
    Netflix业务运维分析和总结
  • 原文地址:https://www.cnblogs.com/coolkiss/p/1921494.html
Copyright © 2020-2023  润新知