5

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

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

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

SwitchTasksIsComplete(int taskId, bool isComplete, int userId)

of并在每次单击时TaskController使用其checked属性作为参数。isComplete

4

2 回答 2

9

onclick您可以为此使用 HTML :

@Html.CheckBox("mycheckbox", new { onclick="triggerLink()" })

使用@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>

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

@{
    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 + "'" })
于 2012-09-14T22:40:09.260 回答
0
@{
    var url = Url.Action("action", "controller");
}
<label class="some-style">
   <input type="checkbox" onclick="window.location='@url'" />
   <span class="Some-other-style">Your Label</span>
</label>

该解决方案使用 url 操作实现了一个常规的 html 复选框表达式,每当单击文本框时,该操作都会提交给控制器。如果您需要知道复选框的状态,您还可以包含一个值。

于 2020-07-02T11:18:42.347 回答