Html.CheckBox onclick事件正在转义

Html.CheckBox onclick event is getting escaped

本文关键字:转义 事件 CheckBox onclick Html      更新时间:2023-09-26

我正在尝试生成一系列复选框,这些复选框将更新跨度,以跟踪已选中的复选框的数量(显示类似于"12个复选框中的4个")。我已经创建了处理这个问题的JavaScript函数updateSelected,但它需要跨度的ID和复选框的类来计数,所以我尝试用这个代码来生成每个复选框:

@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", i), 
  new { onclick = "updateSelected('" + selectedSpanId + "', '" + checkboxClass + "')" })

这将生成以下HTML:

<input id="contentprofilestate_6__selected" name="contentprofilestate[6].selected" 
 onclick="updateSelected(&#39;StMarySpan&#39;, &#39;StMaryCheck&#39;)"
 type="checkbox" value="true" />

如何在不转义撇号的情况下使onclick事件处理程序进行呈现?或者,有没有更好的方法来完成这项任务(如果有,请在您的建议中使用jQuery)?

注意:Lester

我创建了一个新项目并创建了这个视图,它仍然逃脱了撇号:

@{
    ViewBag.Title = "index";
}
<h2>index</h2>
@Html.CheckBox(string.Format("contentprofilestate[{0}].selected", 0), new { onclick = "updateSelected('" + "test" + "', '" + "test2" + "')" })

替代解决方案

我不知道如何避免撇号被转义,所以我写了一些jQuery逻辑来做我需要的事情,而不需要任何内联JavaScript:

jQuery(document).ready(function () {
    jQuery(':checkbox').click(function () {
        var clientHeader = jQuery(this).closest('.client-header');
        var clientCheckedSpan = clientHeader.find('.client-checked');
        var inputChecked = clientHeader.find('input:checked');
        clientCheckedSpan.text(inputChecked.length);
    });
});

撇号被编码是非常奇怪的。我没想到他们会是,经过快速测试,他们不是。这种观点可能还有其他原因。如果你只把那一行放在一个空视图中,我打赌你不会遇到同样的问题。

至于任何其他选择,您可以使用jQuery:轻松地获得所选复选框的数量

var numChecked = $("input:checked[id^=contentprofilestate]").size();