Отправить флажок состояния без кнопки отправки - PullRequest
1 голос
/ 27 марта 2012

У меня есть вид с несколькими флажками, которые могут быть выбраны или не выбраны. Я хотел бы всегда регистрировать любое изменение в флажке, без использования кнопки отправки (пользователь может забыть сделать это, и это будет тратить время).

Итак, есть ли способ справиться с этим внутри представления? До сих пор я использовал только контроллер для этой работы.

Итак, кусок кода:

  @ModelType MvcApplication.OpportuniteDetails

  @Code
       ViewData("Title")="Details"
  @End Code

  <script type="text/javascript">
  $(function () {
    $(':checkbox').change(function() {
        $.ajax({
            url: '@Url.Action("update")',
            type: 'POST',
            data: { isChecked: $(this).is(':checked') },
            success: function (result) { }
        });
    });
  });
  </script>
  [... Some code here...]
  @Html.Raw("Mail sent?") @Html.CheckBox(Model.Opportunite.Mail)

  <input type="checkbox" name="mail" id="mail" onclick="test()" />

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Вы можете использовать AJAX:

$(function() {
    $(':checkbox').change(function() {
        var form = $(this).closest('form');
        $.ajax({
            url: form.attr('action'),
            type: form.attr('method'),
            data: form.serialize(),
            success: function(result) {

            }
        });
    });
});

В этом примере мы подписываемся на событие изменения каждого флажка.Когда это событие инициируется, мы ищем содержащую форму и отправляем ее содержимое на сервер с помощью AJAX-запроса.

И если вы хотите отправить серверу только текущее состояние флажка, а не всю форму:

$(function() {
    $(':checkbox').change(function() {
        $.ajax({
            url: '@Url.Action("SomeAction")',
            type: 'POST',
            data: { isChecked: $(this).is(':checked') },
            success: function(result) {

            }
        });
    });
});

где вы можете выполнить действие контроллера, которое выполнит необходимую обработку:

[HttpPost]
public ActionResult SomeAction(bool isChecked)
{
    ...
}
1 голос
/ 27 марта 2012

Если вам не нужен или вам нужен AJAX и вы просто хотите отправить форму, этот

$(':checkbox').change(function() {
    var form = $(this).closest('form');
    form.get( 0 ).submit();
});

сделает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...