Asp.net mvc 3 将客户端复选框单击处理程序添加到Razor视图

Asp.net mvc 3 将客户端复选框单击处理程序添加到Razor视图,asp.net-mvc-3,razor,unobtrusive-javascript,Asp.net Mvc 3,Razor,Unobtrusive Javascript,将Razor视图发送到浏览器时,以下标记将生成一个带有id=“IsRecurring”的复选框类型的输入 <div class="editor-label"> @Html.LabelFor(model => model.IsRecurring) </div> <div class="editor-field"> @{ @Html.EditorFor(model => model.IsRecurring) }

将Razor视图发送到浏览器时,以下标记将生成一个带有
id=“IsRecurring”
的复选框类型的输入

<div class="editor-label">
    @Html.LabelFor(model => model.IsRecurring)
</div>

<div class="editor-field">
    @{
        @Html.EditorFor(model => model.IsRecurring)
    }
</div>

@LabelFor(model=>model.IsRecurring)
@{
@EditorFor(model=>model.IsRecurring)
}
我需要根据复选框的选中状态显示/隐藏其他标记块

哪种方法最适合MVC3

我的计划是在div上方添加以下脚本:

<script type="text/javascript">
    $("#IsRecurring").click(function () {
        do show hide;
    });
</script>

$(“#IsRecurring”)。单击(函数(){
一定要显示隐藏;
});

我的视图标记中放置脚本的适当位置在哪里?有没有更好的方法可以引用
IsReccuring
复选框,而不是事先知道它将具有什么Id?

隐藏/显示是如何使用脚本的行为,在复选框中添加类:

@Html.CheckBoxFor(model => model.IsRecurring, new {@class "recurring"})


//event
$(".recurring input:checkbox").click(function () {
                   //hide/show
                });

您可以这样尝试:

@Html.CheckBoxFor(model => model.IsRecurring, new {onchange = "checkedChanged"})

//JS
var checkedChanged = function () {
    alert("checkedChanged");
}
您也可以尝试:

$('#checkboxId').click(function () {
    //add code here
    });

早于IE9的IE无法识别我提到的onchange事件AFAIKAs,我愿意使用一种不引人注目的方法将客户端脚本逻辑从文档模型中分离出来。另外,我的问题包括“JS应该在视图中的什么位置”?这对我们很有用。Maxim,我们将javascript放在一个与脚本标记链接的外部.js文件中。不需要使用新类,因为Razor引擎将checkbx绑定到模型,从而将IsRecurring的id提供给checkboxView中的事件处理逻辑在哪里?它甚至是米吗?我将如何通过ID引用元素。我没有一个复选框类,因此在我的例子中使用一个类是错误的。