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
。使用htmlControls
。 WebControls
充其量是过时的,最坏的情况是在整个 HTML 上大便。使用 HtmlControls
可以让您更好地控制标记 - 但理想情况下,只需在 Render
方法中直接使用 HtmlTextWriter
完成所有操作。
谢谢@Dai 的建议,但是我不能改成HtmlControls...后面有很多代码,不可行:\
您无需更改任何内容即可使用HtmlControls
- 它们都是System.Web.UI.Control
的子类,因此您可以插入代表<span>
的HtmlGenericControl
,就像您当前的代码添加@ 987654334@.
Mmm..我已经过测试并添加了 System.Web.UI.HtmlControls 库以避免错误,但是在返回我的 C# 函数我的标签时,我得到一个错误,因为不是与 WebControl 相同的类型...
【参考方案1】:
解决了。
问题在于 inp.ID 为空,因为它仍未添加。所以我所做的是在定义 AssociatedControlID 属性之前在输入上生成一个随机 ID。
【讨论】:
以上是关于WebControl Label 像 Span 一样呈现的主要内容,如果未能解决你的问题,请参考以下文章
用label或span聀laceholder,怎么防止label被选中
WebControl 创建中的 Render 和 RenderControl 有啥区别?