MVC3动态列表更新问题

时间:2011-11-14 04:26:13

标签: asp.net asp.net-mvc-3 list dynamic checkbox

我有一个动态列表,我需要将所选项目从视图返回到控制器。我检查了链接CheckboxList in MVC3 View and get the checked items passed to the controller问题是我有一个动态列表,我需要水平显示它,所以我正在使用

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

我也有一个同样形式的textarea。

在控制器发布方法中,我可以访问textarea值,但不能访问列表或选中的项目。请帮忙。

或者还有其他更好的方法来显示我的清单并取回清单项吗?

我是MVC的新手,任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

使用JQuery是最好的方法: 1-下载Jquery.json.js并将其添加到您的视图中:

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

2-添加&#34; .cssMyClass&#34;到所有复选框,以便您可以通过其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>

正如您所看到的,我已将所有选定的值添加到数组中,并且已将其传递给&#34;保存&#34; &#34; Home&#34;的行动控制器由ajax
* - 在Controller中,您可以通过添加数组作为参数来接收值:

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

我搜索过多,但显然这是唯一的解决方案。如果您找到更好的解决方案,请告诉我。