Я довольно новичок в MVC и начинаю с версии 3. У меня проблема со списком переупорядочивания jQuery, который поставляется с MVC3.
Представление отображается из перечисления моей модели:
@using (Html.BeginForm())
{
<ul id="questionlist" class="ReorderList">
@for (int i = 0; i < data.Count(); i++)
{
<li>
<span class="dragHandle"></span>
@Html.HiddenFor(x => data[i].ID)
@Html.HiddenFor(x => data[i].DisplayOrder)
@Html.TextBoxFor(x => data[i].QuestionText)
</li>
}
</ul>
<input type="submit" value="Save" />
}
Когда страница загружается, jquery является init в списке:
<script type="text/javascript">
$(document).ready(function () {
var unordered = $("#questionlist").sortable({
axis: 'y',
update: listUpdated });
});
function listUpdated(event, ui) {
$('input[name$="DisplayOrder"]').each(function (index) { this.value = index; });
}
</script>
И как вы можете видеть после обновления заказа, jQuery обновляет все скрытые поля, которые отображаются в DisplayOrderсвойство в моей модели.
Отладка этого я вижу, что значения отправляются обратно в контроллер должным образом, бизнес-объекты обновляются и сохраняются в SQL Server правильно.Запустив запрос к таблице, я вижу, что все обновляется в порядке.
Моя проблема возникает, когда пользователь нажимает кнопку «Сохранить», возвращаемый HTML-код находится в исходном порядке, а не в том порядке, в котором они изменились.это к.Fiddler показывает HTML, возвращающийся в исходном порядке, но скрытое поле DisplayOrder имеет правильные (измененные) значения.При нажатии навигационной кнопки на экране для обновления представления список отображается в правильном порядке.Я отладил процесс рендеринга, и все, кажется, рендерится в правильном порядке, я также попытался украсить контроллер с OutputCaching, установленным в false, но, конечно, он не работал, так как свойство DisplayOrder рендерилось с помощьюправильные значения.
Что я делаю неправильно, чтобы он неправильно отображал первый постбэк, но не последующие постбэки?