基本上我需要渲染的是:
<input id="MainContent_PageContent_SettingsPage_RFID Info" type="checkbox" name="ctl00$ctl00$MainContent$PageContent$SettingsPage$RFID Info" checked="checked">
<label for="MainContent_PageContent_SettingsPage_RFID Info">
<i class="fa fa-check" aria-hidden="true"></i>
</label>
同时System.Web.UI.WebControls.CheckBox只给我这个:
<input id="MainContent_PageContent_SettingsPage_RFID Info" type="checkbox" name="ctl00$ctl00$MainContent$PageContent$SettingsPage$RFID Info" checked="checked">
<label for="MainContent_PageContent_SettingsPage_RFID Info">
RFID Info
</label>
答案 0 :(得分:1)
虽然您不必对ASP.NET如何呈现CheckBox有很多控制权,但您有两种方法可以考虑解决此问题。
考虑不使用CheckBox控件
如果是一个选项,您可能需要考虑使用用<input>
属性修饰的普通runat="server"
元素(因此可以通过代码隐藏来访问它)而不是CheckBox控件。这样可以让您更灵活地了解它的显示方式,因为您不必担心默认生成的代码:
<!-- This should allow you to still access RFIDInfo in your code-behind -->
<input id="RFID_Info" runat="server" type="checkbox" checked="checked">
<i class="fa fa-check" aria-hidden="true"></i>
使用Javascript或jQuery替换HTML内容
另一个选择,如果你想使用CheckBox控件,可以考虑通过Javascript或jQuery执行客户端替换,以定位相应的标签并替换内容:
// Pure Javascript approach
document.querySelector('[for$="RFID Info"]').innerHTML = '<i class="fa fa-check" aria-hidden="true"></i>'
// jQuery approach
$(function(){
// Replace the contents of your label with your Font Awesome icon
$('label[for$="RFID Info"]').html('<i class="fa fa-check" aria-hidden="true"></i>');
});
示例强>
<!DOCTYPE html>
<html>
<head>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Label Replacement</title>
</head>
<body>
<input id="MainContent_PageContent_SettingsPage_RFID Info" type="checkbox" name="ctl00$ctl00$MainContent$PageContent$SettingsPage$RFID Info" checked="checked">
<label for="MainContent_PageContent_SettingsPage_RFID Info">
RFID Info
</label>
<script>
document.querySelector('[for$="RFID Info"]').innerHTML = '<i class="fa fa-check" aria-hidden="true"></i>'
</script>
</body>
</html>
&#13;