Сохранение выбора флажка без POST - PullRequest
2 голосов
/ 21 марта 2012

Я пытаюсь решить следующую проблему.

Допустим, у вас есть следующий код в вашем представлении

@foreach (var x in Model)
{
    <input type="checkbox" name="IDs" value="@x.ID"  /> 
}

Затем пользователь выбирает несколько ссылок и щелкает ссылку. Как передать идентификаторы выбранных флажков контроллеру.

например, у вас есть следующая ссылка

@Html.ActionLink("Do Something", "ActionName", new { selection = ???? // i dont know how i reference the checke boxes })

Я знаю, что могу поместить цикл в HTML-форму начала и сделать ссылку кнопкой отправки, но это краткое изложение проблемы, которую я пытаюсь решить. В реальном приложении я не могу преобразовать ссылку на кнопку.

Я бы предпочел не использовать JavaScript, если это возможно.

Ответы [ 3 ]

1 голос
/ 21 марта 2012

Я не знаю, что есть способ сделать это с типичными помощниками MVC. В прошлом я создал ссылку так, чтобы она на клике называлась пользовательской функцией jquery, которая бы выбирала все входные данные с выбранным флажком типа, а затем создавала список для отправки обратно.

Примерно так:

$(
    $('#anchorid').click(function()
        {
            SubmitCheckBoxes();
        });
);

function SubmitCheckBoxes()
{
    var list = {};
    $(input[type="checkbox"]:checked).each(
        function() 
        {
            var identifier = $(this).attr('for');
            if(identifier == undefined)
                identifier = $(this).attr('name');
            if(list[identifier])
                list[identifier].push($(this).val());
            else
                list[identifier] = [$(this).val()];
        });
    //This must be here to make any json array not have brackets.
    //MVC binding will not work otherwise
    jQuery.ajaxSettings.traditional = true;
    $.post("./ActionName", list, function(data){//do something on response});
}
0 голосов
/ 22 мая 2012

Чтобы отправить данные на контроллер без использования JavaScript, вам нужно использовать отправку HTML-формы. Есть много вариантов, таких как кнопки, ввод типа ввода или ввод типа изображения в вашей форме. Вы можете использовать изображение, чтобы создать видимость ссылки, но это может быть не идеально.

Если вы не можете использовать кнопки или вводы submit / image, тогда JavaScript, вероятно, ваш следующий лучший вариант.

По какой причине вы не можете использовать кнопки или JavaScript?

0 голосов
/ 21 марта 2012

Вы можете легко сохранить значения выбранных флажков в массиве, отметив / сняв галочку с них.то есть

$(function(){
  $('#btnClick').click(function(){
    var values = [];
    $(':checkbox:checked').each(function(i){
      values[i] = $(this).val();
    });
  });
});

и в тот момент, когда вы будете готовы, вы можете либо подключиться к своей ссылке, сделать прямую публикацию и передать «значения» в качестве параметров в метод jquery post.

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