Html.CheckBox onclick事件正在逃脱

时间:2012-01-12 23:12:37

标签: javascript asp.net-mvc

我正在尝试生成一系列复选框,这些复选框将更新一个范围以跟踪已检查的复选框的数量(显示类似“4 of 12 checked”)。我已经创建了处理它的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);
    });
});

1 个答案:

答案 0 :(得分:1)

撇号被编码是很奇怪的。我不认为他们会这样,经过快速测试他们不是。在那个观点中可能还有其他事情发生。如果你只在空视图中放置那一行,我敢打赌你不会遇到同样的问题。

对于任何其他替代方案,您可以使用jQuery轻松获取所选复选框的数量:

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