Список повторных заказов MVC не упорядочен при обратной передаче - PullRequest
1 голос
/ 15 февраля 2011

Я довольно новичок в 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 рендерилось с помощьюправильные значения.

Что я делаю неправильно, чтобы он неправильно отображал первый постбэк, но не последующие постбэки?

1 Ответ

0 голосов
/ 13 декабря 2011

На самом деле, я понял, что невозможно изменить модель во время обратной передачи из-за модели обработки HTML Helpers & MVC.

Возможно, я не правильно использовал слова, поэтому лучше посмотрите сами-

Как изменить данные опубликованной формы в действии контроллера перед отправкой для просмотра?

Исходная ссылка: http://www.gxclarke.org/2010/05/consumption-of-data-in-mvc2-views.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...