【发布时间】:2012-11-01 13:53:59
【问题描述】:
我有一个 MVC 索引页面,它反映了数据库中的一个表。
其中一列是布尔值。
我想在索引页面中有一个复选框,当单击该复选框时,会立即调用一个操作,该操作将在现场保存新状态,而无需提交/刷新。
【问题讨论】:
标签: asp.net-mvc checkbox submit actionlink checkboxfor
我有一个 MVC 索引页面,它反映了数据库中的一个表。
其中一列是布尔值。
我想在索引页面中有一个复选框,当单击该复选框时,会立即调用一个操作,该操作将在现场保存新状态,而无需提交/刷新。
【问题讨论】:
标签: asp.net-mvc checkbox submit actionlink checkboxfor
您应该将onclick 事件添加到input。您的剃须刀看起来类似于:
@Html.CheckBoxFor(m => m.Foo, new { onclick = "SomeMethod(this)" });
那么您的脚本将类似于(假设您可以访问 jQuery;转换它应该很简单):
function SomeMethod(checkboxInput) {
$.ajax({
type: 'POST',
url: Your/Action,
data: { newValue: checkboxInput.checked },
success: success,
dataType: 'json'
});
}
注意参数名称:newValue。
最后是你的 Action 来处理请求:
public JsonResult Action(bool newValue) {
//Do your stuff!
//repository.Update();
}
注意参数名称:newValue。
【讨论】:
JsonResult 中的内容 3) 没有 JS-free 的方式吗?
SomeMethod可以去任何你想去的地方。你可以把它放在页面本身,或者像我经常做的那样,你可以把它放在一个外部文件中,然后在页面加载时加载该文件。 JsonResult 应该包含您的代码以实际执行更新或将您想要执行的内容保存到数据库中。
return Json(true);。