Как создать мастер ASP.NET MVC с поддержкой кнопки «Назад»? - PullRequest
3 голосов
/ 26 февраля 2009

Я создаю приложение с ASP.NET MVC, и мне нужен интерфейс в стиле мастера на одной из моих страниц.

Вот что я делаю до сих пор:
Я создал страницу с 5 делами. У всех есть "display: none" в файле css. Когда пользователь впервые заходит на страницу, я использую jquery, чтобы показать первый шаг, используя:

$("#callStep1").show();

На первом шаге есть список выбора, и когда пользователь делает выбор, выполняется следующий код:

$("#callStep1").hide();
$("#callStep2").show();

Это продолжается до тех пор, пока пользователь не перейдет к шагу 5 и не нажмет кнопку отправки. Все работает нормально, за исключением того, что я на шаге 2, 3, 4, 5 и нажимаю кнопку «Назад», это возвращает меня обратно на страницу, на которой я был раньше, когда я действительно хочу перейти на предыдущий шаг.

Как я могу заставить эту работу? Я видел несколько примеров использования "#" и создания ссылок на странице, но не уверен, что есть лучший способ.

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 26 февраля 2009

Если вам абсолютно не нужен AJAX на странице мастера, это можно сделать, возвращая различные представления после успешной формы POST.

В контроллере:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult DoSomethingLong(int somethingId, int step)
{
  MyModelType myModel = MyModelFactory.Fetch(somethingId);

  switch(step)
  {
    case 1:
      return View("Step1", myModel);
      break;
    case 2:
      return View("Step2", myModel);
      break;
  }
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DoSomethingLong(int somethingId, int step)
{
   MyModelType myModel = MyModelFactory.Fetch(somethingId);

   if (TryUpdateModel(myModel))
   {
       //Successful update.  Send to next step.
       return RedirectToAction("DoSomethingLong", new {somethingId = somethingId, step = step + 1}
   }
   else
   {
       //Update failed, redisplay current View with validation errors.
       return View(myModel);
   }
}
4 голосов
/ 26 февраля 2009

Реализация Ajax-управляемых ссылок в совершенно ненавязчивый и доступный манера (также известный как Hijax) с поддержка браузера вперед / назад кнопки навигации и закладки. Улучшить сопоставимые ссылки, управляемые DHTML а также.

http://www.stilbuero.de/jquery/history/#Chapter_3

Hijax (Википедия)

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