2011-11-14 97 views
0

我有一個動態列表,我需要將選擇的項目從視圖返回給控制器。我檢查了鏈接CheckboxList in MVC3 View and get the checked items passed to the controller問題是我有一個動態列表,我需要所以我用MVC3動態列表更新問題

<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來橫向顯示。

在控制器post方法中,我能夠訪問textarea值,但不能訪問列表或檢查項。請幫忙。

或者還有其他更好的方式來顯示我的列表並取回清單項目?

我是新來的MVC,任何幫助將不勝感激。

感謝

+0

這可能會幫助你http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx – Rafay

回答

0

使用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> 

正如你可以看到我已經添加了所有選擇值的數組和我通過它「拯救」的「家」動作c ontroller阿賈克斯
* - 在控制器,你可以通過添加一個數組作爲參數收到的值:

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

我已經搜索了太多,但顯然這是唯一的解決方案。如果您找到更好的解決方案,請讓我知道。