单击复选框后如何调用控制器方法?

Iva*_*yev 4 .net javascript asp.net asp.net-mvc asp.net-mvc-3

是否有可能CheckBox像点击一样在点击时调用控制器方法ActionLink?基本上,我想替换这个ActionLink:

@Html.ActionLink("Switch status", "SwitchTaskIsComplete", "Task", new {
    taskId = task.TaskId, 
    isComplete = !task.IsComplete, 
    userId = Model.UserId
}, null)
Run Code Online (Sandbox Code Playgroud)

使用a @Html.CheckBox,调用相同的方法

SwitchTasksIsComplete(int taskId, bool isComplete, int userId)
Run Code Online (Sandbox Code Playgroud)

TaskController,并使用其checked属性作为isComplete参数,每次被点击的时间.

McG*_*gle 6

您可以使用HTML onclick:

@Html.CheckBox("mycheckbox", new { onclick="triggerLink()" })
Run Code Online (Sandbox Code Playgroud)

使用@Url.Action而不是@Html.ActionLink仅获取URL:

<script>
    function triggerLink() {
        var theUrl = '@Url.Action("SwitchTaskIsComplete", "Task", new {taskId = task.TaskId, isComplete = !task.IsComplete, userId = Model.UserId}, null)';
        window.location = theUrl;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

您还可以将整个表达式内联到属性中:

@{
    var url = Url.Action("SwitchTaskIsComplete", "Task", new {taskId = task.TaskId, isComplete = !task.IsComplete, userId = Model.UserId}, null);
}
@Html.CheckBox("mycheckbox", new { onclick="window.location = '" + url + "'" })
Run Code Online (Sandbox Code Playgroud)