WebControl Label 像 Span 一样呈现

Posted

技术标签:

【中文标题】WebControl Label 像 Span 一样呈现【英文标题】:WebControl Label is rendering like Span 【发布时间】:2020-03-16 02:28:43 【问题描述】:

我正在尝试在代码隐藏中生成下一个代码:

<label class="switch">
      <input type="checkbox">
      <span class="slider round"></span>
</label>

这是我尝试过的:

Label lab = new Label();
lab.CssClass = "switch";
CheckBox inp = new CheckBox();
var span = new Label();
span.CssClass = "slider round";
lab.Controls.Add(inp);
lab.Controls.Add(span);
lab.AssociatedControlID = inp.ID;

我正在搜索,我发现要呈现标签标签而不是跨度,您必须设置 AssociatedControlID,这就是我所做的,但不起作用。正在渲染跨度标签而不是标签。

谢谢。

---编辑---- 我的 aspx 文件中的这段代码可以工作,但我的代码隐藏没有。

<asp:Label AssociatedControlID="CheckID" ID="LabelID" runat="server" class="switch">
  <asp:CheckBox ID="CheckID" runat="server" />
  <asp:Label ID="SpanID" runat="server" class="slider round"></asp:Label>
</asp:Label>

【问题讨论】:

不要使用WebControls。使用htmlControlsWebControls 充其量是过时的,最坏的情况是在整个 HTML 上大便。使用 HtmlControls 可以让您更好地控制标记 - 但理想情况下,只需在 Render 方法中直接使用 HtmlTextWriter 完成所有操作。 谢谢@Dai 的建议,但是我不能改成HtmlControls...后面有很多代码,不可行:\ 您无需更改任何内容即可使用HtmlControls - 它们都是System.Web.UI.Control 的子类,因此您可以插入代表&lt;span&gt;HtmlGenericControl,就像您当前的代码添加@ 987654334@. Mmm..我已经过测试并添加了 System.Web.UI.HtmlControls 库以避免错误,但是在返回我的 C# 函数我的标签时,我得到一个错误,因为不是与 WebControl 相同的类型... 【参考方案1】:

解决了。

问题在于 inp.ID 为空,因为它仍未添加。所以我所做的是在定义 AssociatedControlID 属性之前在输入上生成一个随机 ID。

【讨论】:

以上是关于WebControl Label 像 Span 一样呈现的主要内容,如果未能解决你的问题,请参考以下文章

左边label随着右边textarea高度自适应

如何在nativescript中使Label元素内联?

用label或span聀laceholder,怎么防止label被选中

WebControl 创建中的 Render 和 RenderControl 有啥区别?

在 asp.net 中,如何从 usercontrol 获取自定义 webcontrol 的引用?

如何在asp.net mvc中将Webcontrol表导出到excel