Проблема обновления динамического списка MVC3 - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть динамический список, и мне нужно вернуть выбранные элементы из представления обратно в контроллер. Я проверил ссылку CheckboxList в MVC3 View и передал проверенные элементы контроллеру . Проблема в том, что у меня динамический список, и мне нужно отображать его горизонтально, поэтому я использую

<table>
  <tr>
  @foreach (var item in mylist)
  {
  <td><img src='@item.PictureUrl'/><br />@Html.CheckBox(@item.Id,@item.checkedin)@item.Name</td>
 }
 </tr>
</table>

У меня также есть текстовая область в той же форме.

В методе контроллера post я могу получить доступ к значению textarea, но не к списку или проверенным элементам. пожалуйста, помогите.

Или есть какой-нибудь другой лучший способ отобразить мой список и вернуть элементы контрольного списка?

Я новичок в MVC, любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 14 ноября 2011

Лучше всего использовать JQuery: 1- Загрузите Jquery.json.js и добавьте его в свой просмотр:

 <script src="../../Scripts/jquery.json.js" type="text/javascript"></script>

2 - добавьте ".cssMyClass" ко всем флажкам, чтобы вы могли получитьзначения по их классу css:

 <script type="text/javascript" >
       $(document).ready(function () {
           $("#btnSubmit").click(sendValues);
         });

     function populateValues()
     {
         var data = new Array();
         $('.myCssClas').each(function () {
             if ($(this).attr('checked')) {
                 var x = $(this).attr("value");
                 data.push(x);
             }
         }); 

         return data;
     }

     function sendValues() {
         var data = populateValues();
               $.ajax({
                   type: 'POST',
                   url: '@Url.Content("~/Home/Save")',
                   data: $.json.encode(data),
                   dataType: 'json',
                   contentType: 'application/json; charset=utf-8',
                   success: function () { alert("1"); }
               });

       } 



 </script>

Как вы можете видеть, я добавил все выбранные значения в массив и передал его в действие "Сохранить" контроллера "Home" с помощью ajax.* - в Controller вы можете получить значения, добавив массив в качестве аргумента:

 [HttpPost]
        public ActionResult Save(int[] val)
        {

Я искал слишком много, но, видимо, это единственное решение.Пожалуйста, дайте мне знать, если вы найдете лучшее решение для этого.

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