У вас есть несколько вариантов. Одним из способов было бы поместить флажки в (нормальную) форму, а затем использовать плагин jQuery Form для Ajaxify формы:
@using(Html.BeginForm()) {
@Html.Checkbox(...)
}
<script type="text/javascript">
$(document).ready(function () {
$('form').ajaxForm({
success: Saved,
error: HandleError
});
});
function Error(response, status, err) {
// code to handle error here
}
function Saved(responseText, statusText, xhr, $form) {
// code to handle succes, if any
}
</script>
Конечно, вы также можете использовать @Ajax.BeginForm
, но это дает преимущество в том, что он легко понижается. Просто удалите инициализацию формы jQuery, и вы получите обычную форму:)
Другая возможность - просто использовать @Ajax.ActionLink
. Я написал сообщение в блоге о том, как бороться с Ajax.ActionLink
, которое, я думаю, поможет вам.
Подпись для вашего действия контроллера по вашему вопросу выглядит правильно:
public ActionResult Save(int id, bool status){}
Другой вариант - на самом деле создать Settings
модель представления (назовите ее как хотите), и там просто есть набор bool
свойств для представления флажков:
public class Settings
{
public bool Status { get; set; }
// more properties here
}
тогда вы можете привязать свое действие к объекту настроек:
public ActionResult Save(int id, Settings settings){}
Это пригодится, если у вас будет несколько флажков для привязки.