Arhn - архитектура программирования

Редактирование элемента в диалоговом окне и последующее обновление отображаемой текущей страницы (без перехода на страницу 1)

У меня есть решение с ASP.NET MVC3. У меня есть страница, на которой мы можем управлять пользователями (создавать/редактировать/удалять). У меня есть пейджинг на этой странице.

введите здесь описание изображения

При нажатии кнопки редактирования отображается диалоговое окно, в котором возможно редактирование.

введите здесь описание изображения

Когда пользователь нажимает кнопку «Сохранить», диалоговое окно скрывается, а список обновляется через ajax.

Проблема возникла, когда пользователь редактировал элемент на странице 2 или 3 или... В этом случае отображается страница 1. Причина в том, что информация о текущей странице неизвестна в контроллере моего действия. Я хотел бы сохранить текущую активную страницу в моем представлении.

Вот решение, которое у меня есть, но не совсем устраивает:

На моей кнопке редактирования у меня есть ActionLink ниже:

@Html.ActionLink("Editer", "Edit", new { userID = item.UserID }, new { userID = item.UserID, page = Model.PageNumber, @class = "btn small editUser" }) 

Я ввожу номер страницы в свою якорную ссылку. Далее отображается диалоговое окно. Следующий пользователь нажимает «Сохранить» (отправляет). Запускается действие отправки, и номер страницы вводится в параметры публикации следующим образом:

$('form', dialog).submit(function () {
    $.post($(this).attr('action'), $(this).serialize() + '&page=2', function (data, status) {
            $('#my-modal').modal('hide');
            $("#userList").html(data);
    })
});

Как видите, я вручную добавил '&page=2' для тестирования. Действие в моем контроллере получает опубликованные данные (отредактированный элемент + номер страницы), обновляет мой репозиторий, затем RedirectToAction("List", new {page = page}) обновляет список для нужной страницы.

Мне не нравится это решение. Должен быть лучший способ сделать это, не так ли?

Заранее спасибо, если кто-то может помочь мне в этом.

06.04.2012

Ответы:


1

Если у вас есть полная «сетка Ajax», которую вы можете обновить без обновления страницы, или у вас есть сетка «на стороне сервера», вам нужно перезагрузить страницу, и ваше решение в порядке.

06.04.2012
  • Что вы подразумеваете под полной «сеткой ajax»? Извините, это первый раз, когда я пытаюсь реализовать такие вещи. Я немного потерялся :( 06.04.2012
  • Ну, это означает, что обновление происходит на стороне клиента, а не на стороне сервера (для обновления используется javascript) 06.04.2012
  • Хорошо, я понимаю, что вы имеете в виду. Я бы предпочел решение на стороне сервера, но в моем случае я потерял номер страницы. Я думаю, что это тривиальный сценарий, но я не могу его решить :( 06.04.2012
  • Я думаю, вы можете использовать Model.PageNumber в своем javascript... тогда он не будет потерян. 06.04.2012

  • 2

    Почему бы вместо того, чтобы возвращать всю сетку, просто обновите строку новыми данными. Я делаю это на своих страницах поиска/редактирования. Когда пользователь щелкает строку, сохраните индекс этой строки в javascript. Затем после успешного редактирования обновите строку значениями из текстовых полей.

    06.04.2012
  • Возможно обновление только редактируемой строки. Не знаю, единственное ли это решение. Если возможно (и разумно), я предпочитаю обновлять всю 1-ю, 2-ю, ... "страницу" 06.04.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..