我有一个可排序的项目列表,这些项目是从模型上的数组属性生成的。我想使用 jquery UI sortable 对项目重新排序并将此顺序保存在我的 Action 方法中。
这是我用来输出项目的代码:
@using(@Html.BeginForm("Save", "MyController", FormMethod.Post))
{
<input type="submit" value="Save"/>
@Html.HiddenFor(x=>x.Id)
<ul id="sortable2" class="connectedSortable">
@{
int count = 0;
}
@foreach(var item in Model.CollectionOfThings)
{
<li class="ui-state-default">
@Html.Hidden("Things[" + count + "].Id", item.Id)
@Html.Hidden("Things[" + count + "].Title", item.Title)
@item.Title
</li>
count++;
}
</ul>
}
当我在我的操作方法中收到模型时,顺序与我开始时的顺序相同。我知道这是因为索引,但我想不出一种方法(不编写一些自定义 javascript 来更新每个隐藏输入的 name 属性)以正确的顺序将项目绑定到数组。
任何人都可以提出一种可以实现的方法吗?我可能可以编写一些 Javascript 来做到这一点,但我希望我可以纯粹通过模型绑定来做到这一点。
我尝试像这样输出输入:
@Html.Hidden("Things[].Id", item.Id)
然而,这只是导致我的收藏为空。