2013-03-29 1 views
0

Я создал массив внутри javascript. Теперь я хочу использовать контроллер массива. В настоящее время я использую FormCollection для доступа к данным из формы. Есть ли способ получить доступ к моему массиву javascript в FormCollection или как параметр в Html.BeginForm()?Как я могу получить доступ к массиву JavaScript в моем MVC-контроллере?

Я попытался сделать сообщение JSON, используя некоторые примеры, которые я нашел на форуме, но массив был пустым в контроллере. Не могли бы вы помочь с наилучшим подходом к доступу к моему массиву javascript в контроллере?

<script type="text/javascript"> 

    var $checkboxes = $('input[type="checkbox"]'); 

    $(document).ready(function() { 
     $('#saveBtn').click(function() { 
      var checkList = new Array(); 
      $.each($checkboxes, function() { 
       if ($(this).is(':checked')) { 

        checkList.push('checked'); 
       } 
       else 
        checkList.push('unchecked'); 
      }); 
      alert(checkList); 

     }); 

    });    
</script> 

UPDATE 1

 $(document).ready(function() { 
      $('#saveBtn').click(function() { 
       var options= []; 
$.each($checkboxes, function() { 
if ($(this).is(':checked')) { 
    var item={ "UserChoice" : "checked", "OptionID": "YouCanSetIDHere"}; 
    } 
    else 
{ 
    var item={ "UserChoice" : "unchecked", "OptionID": "YouCanSetIDHere"}; 
} 
options.push(item); 
} 
    $.ajax({ type: "POST", url: '@Url.Action("Edit","Attendance")', 
      contentType: "application/json", 
      data: JSON.stringify(options) 
    }).done(function (html) { 
      //do something with the response. 
     }); 


     }); 

     }); 
+0

Ваш пост json не включен в ваш пример кода –

ответ

0

Вы можете создавать предметы, которые похожи на ваш ViewModel и нажать, что в массив и отправить его с помощью JQuery пост. В действии вашего контроллера вы можете использовать коллекцию своей модели просмотра для ее принятия. Подстановка модели MVC позаботится обо всем остальном.

Предположим, у вас есть ViewModel как этот

public class UserOptionVM 
{ 
    public string OptionID{ set;get;} 
    public string UserChoice { set;get;} 
} 

И в методе действий, вы принимаете коллекцию этого

[HttpPost] 
public ActionResult Save(List<UserOptionVM> model) 
{ 
    // loop through collection and read and save 

} 

Теперь измените файл Js, чтобы отправить то, что совпадает с нашей ViewModel ,

var options= []; 
$.each($checkboxes, function() { 
    if ($(this).is(':checked')) { 
     var item={ "UserChoice" : "checked", "OptionID": "YouCanSetIDHere"}; 
    } 
    else 
    { 
     var item={ "UserChoice" : "unchecked", "OptionID": "YouCanSetIDHere"}; 
    } 
    options.push(item); 
}); 

$.ajax({ type: "POST", 
     url: "@Url.Action("Save","User")", 
     contentType: "application/json", 
     data: JSON.stringify(options) 
     }).done(function (html) { 
       //do something with the response. 
      }); 
+0

Я не могу исправить небольшой сбой прямо здесь :. $ .ajax .... Ожидается «,» или «)». Я добавил код с моими изменениями в свое первоначальное сообщение. Любая идея, что я делаю неправильно? – CloudyKooper

+0

@CloudyKooper: '$ .each' не был закрыт должным образом ('}); '). Я исправил это и в своем ответе. – Shyju

+0

Сделано !!!. Я один счастливый парень !!! Спасибо Shyju !!! – CloudyKooper

Смежные вопросы