【问题标题】:Is it possible to force a WebControl to render as a <div> instead of a <span>?是否可以强制 WebControl 呈现为 <div> 而不是 <span>?
【发布时间】:2012-07-30 18:04:06
【问题描述】:

如何强制WebControl 呈现为&lt;div&gt;?目前,它呈现为&lt;span&gt;,而我们的UI 人员更喜欢它是&lt;div&gt;。为了适应他,我想看看这是否可行,如果可以,怎么可能。

【问题讨论】:

  • 如果是你的控制,你为什么不能简单地改变它?
  • 不需要成为一个聪明人,@Trekstuff...我是网络开发新手,所以我并不总是确切地知道要问什么或如何问它。
  • 这更像是一种变通方法而不是解决方案,但为什么不将span 设置为表现得像div?我知道的唯一主要区别是 span 默认情况下是一个内联元素。我也没有看到 Web 语义有太大区别,否则你的 UI 人员会要求 section 而不是 div
  • @Zhihao 如果这将是一项艰巨的任务,由于时间安排,我们会这样做,但感谢 nunespascal,这真的很容易。因此,做正确的事情比破解它要好。不过,感谢您的建议。

标签: asp.net html .net-3.5 custom-server-controls


【解决方案1】:

是的,这绝对是可能的。 Asp.net 让您可以完全控制呈现的输出。

看看Control Adapters

asp.net 团队已经发布了许多适配器,用于对菜单、TreeView 和 FormView 等控件进行 CSS 友好呈现。看看CSS friend control adapters

您始终可以自己构建,以根据您的 UI 人员的需要自定义渲染。

【讨论】:

    【解决方案2】:

    你可以重写WebControl的RenderBeginTag方法:

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.RenderBeginTag("div");
    }
    

    还有一个可以覆盖的 RenderEndTag,在这种情况下可能不需要:

    public override void RenderEndTag(HtmlTextWriter writer)
    {
        writer.RenderBeginTag();
    }
    

    【讨论】:

      【解决方案3】:

      像这样覆盖TagKey 可能更好:

      protected override HtmlTextWriterTag TagKey =&gt; HtmlTextWriterTag.Div;

      然后WebControl 将呈现的任何属性继续放置在开始标记上。

      【讨论】:

        猜你喜欢
        • 2020-03-16
        • 2011-09-10
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-09
        相关资源
        最近更新 更多