如何将html元素放入asp复选框内的标签中?

时间:2016-06-07 14:27:21

标签: asp.net

基本上我需要渲染的是:

<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>

1 个答案:

答案 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>');
});

示例

enter image description here

&#13;
&#13;
<!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;
&#13;
&#13;