2014-01-06 29 views
0

我在mvc 4中創建了一個雙重列表。在post方法中,我無法獲取模型數據。 我可以將一個項目從一個列表拖放到另一個列表中,並在提交時需要我的發佈方法中的數據。但在model.SelectedColumns我得到null.What我做錯了什麼?asp.net中的雙重列表mvc 4

這裏是我的代碼 -

型號:

public class Columns 
{ 
    public List<string> SelectedColumns { set; get; } 
    public List<string> RemainingColumns { set; get; } 
} 

觀點:

@Html.BeginForm("AddRemoveColumns", "DashBoard",FormMethod.Post){ 
<div style="float: left"> 
    <h2> 
     AddRemoveColumns</h2> 
    <ol id="SelectedColumns" class="connectedSortable"> 
     @foreach (var item in Model.SelectedColumns) 
     { 

      <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>@item 
      </li> 
     } 
    </ol> 
</div> 
<div style="float: right"> 
    <ol id="RemainingColumns" class="connectedSortable"> 
     @foreach (var item in Model.RemainingColumns) 
     { 

      <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>@item 
      </li> 
     } 
    </ol> 
</div> 
<input type="submit" value="Submit" /> 
} 

腳本:

<script type="text/javascript">   
    $(function() { $("#SelectedColumns, #RemainingColumns").sortable({ 
     connectWith: ".connectedSortable" }).disableSelection(); 
    }); 

</script> 

控制器:

public ActionResult AddRemoveColumns() 
{ 
    Columns columns = DbAccess.getSelectedColumns(); 
    return View(columns); 

} 

[HttpPost] 
public ActionResult AddRemoveColumns(Columns model) 
{ 
    Columns columns = new Columns(); 
    columns.SelectedColumns = model.SelectedColumns; 
    return View(); 
} 

回答

0

您正在使用的HTML標籤只顯示你的清單,你還沒有,這就是爲什麼你得到空值,如果你想使用的形式張貼那麼你已經綁定你的MVC控件模型的任何控件綁定列表如下:

@ Html.ListBoxFor(型號=> model.SelectedColumns,新的{@id = 「SelectedColumns」}) @ Html.ListBoxFor(型號=> model.RemainingColumns,新的{@id = 「RemainingColumns」 })

謝謝

+0

我不想使用@ Html.ListBoxFor becoz即時通訊使用jQuery排序。那麼有什麼辦法讓我的控制器中的列表的修改數據?...感謝您的回覆 – Himanshu

+0

只需將$ .ajax用於傳遞列表到控制器,或者如果有任何想要使用表單發佈然後維護2隱藏@ Html.ListBoxFor列表&綁定與模型&修改它們的值使用jQuery改變你的實際列表(jQuery排序列表) – Muntajib

0

表單要求<input>提交其值控制器

您可以使用隱藏的輸入,如果你不希望使用列表框

<input id="hiddenInput" name="SelectedColumns" type="hidden" value="" /> 

* 輸入名稱必須爲模型完全相同

再更新使用jQuery的選定值

$(function() { 
    $("#SelectedColumns, #RemainingColumns").sortable({ 
     connectWith: ".connectedSortable" , 
     update: function() { 
      var selectedValues = $("#SelectedColumns").serialize(); //get selected values 
      $('#hiddenInput').val(selectedValues); //update hidden input 
     } 
    }).disableSelection(); 
});