Я создал двойной список в mvc 4. В методе post я не могу получить данные модели. Я могу перетащить элемент из одного списка в другой и отправить мне данные в свой почтовый метод. Но в model.SelectedColumns я получаю null.Что я делаю неправильно?
вот мой code--
модель:
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();
}
форма требует <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();
});
Вы просто показываете свой список, используя теги html, и вы не привязывали свой список к любому элементу управления, почему вы получаете нулевое значение. Если вы хотите использовать публикацию формы, вам необходимо привязать модель с помощью элементов управления MVC, как показано ниже:
@Html.ListBoxFor(model => model.SelectedColumns, new {@id = "SelectedColumns"}) @Html.ListBoxFor(model => model.RemainingColumns, new {@id = "RemainingColumns"})
благодаря