【问题标题】:Why is a "Span" generated in my HTML from .NET? [duplicate]为什么从 .NET 在我的 HTML 中生成“Span”? [复制]
【发布时间】:2011-09-02 22:32:35
【问题描述】:

我目前正在查看我的一些“动态生成”的 HTML 并注意到这一点:

<div id="MainContent2_news"><span id="MainContent2_ctl00_newsLabel"><...

我的 C# 看起来像这样: <asp:Label ID="newsLabel" runat="server" />

有什么方法可以将 SPAN 更改为 DIV?我遇到了一些丑陋的 XHTML 验证错误。

【问题讨论】:

  • 是的,切换到 asp.net mvc #scnr 。不,真的,如果你需要控制你的 html,webforms 不是你的朋友
  • 它真的不是 webforms,控件是 asp.net 的一个特性,它们在 webforms 和 mvc 中可用:)

标签: c# asp.net html


【解决方案1】:

几乎每个(或者我相信每个)ASP.NET 控件都有其对应的 HTML 标记,它以这种方式发送,以便每个浏览器都可以解释。 DIV 标签由 asp:Panel 渲染。

如果您在使用 SPAN 标记时遇到问题,可以尝试使用 asp:Literal,它不会将任何 HTML 标记附加到您呈现的控件。

【讨论】:

    【解决方案2】:

    生成了一个span,因为它是一个内联的asp 元素。

    如果您想要不生成任何标签的元素,请使用LiteralPlaceHolder

    如果你想有一个div-tag,使用你可以使用Panel或者只是这样做<div class="someclass" runat="server" id="myDiv">Text</div>

    【讨论】:

      【解决方案3】:
      <div id="newsLabel" runat="server"></div>
      

      要通过回发或 page_load 与之交互,请执行此操作

      this.newsLabel.InnerText = "content";
      

      顺便说一句,标记的问题在于控件是 asp.net 的一个功能。 webforms 和 mvc.net 都运行在 asp.net 之上,因此在 webforms 和 mvc.net 之间切换对您没有帮助。

      另外,如果你有兴趣,上面的代码会生成一个System.Web.UI.HtmlControls.HtmlGenericControl类型的控件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-30
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        相关资源
        最近更新 更多