【发布时间】: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 相同的类型...
标签: c# asp.net web-controls