Как создать мастер ASP.NET MVC с поддержкой кнопки «Назад»?
Я создаю приложение с помощью ASP.NET MVC, и мне нужен интерфейс в стиле мастера на одной из моих страниц.
Вот что я делаю до сих пор:
я создал страницу с 5 div. У всех есть "display: none", установленный в файле css. Когда пользователь впервые попадает на страницу, я использую jquery, чтобы показать первый шаг, используя:
$("#callStep1").show();
На первом шаге есть список выбора, и когда пользователь делает выбор, выполняется следующий код:
$("#callStep1").hide();
$("#callStep2").show();
Это продолжается до тех пор, пока пользователь не перейдет к шагу 5 и не нажмет кнопку отправки. Все работает нормально, за исключением случаев, когда я нахожусь на шагах 2, 3, 4, 5 и нажимаю кнопку «Назад», это возвращает меня обратно на страницу, на которой я был раньше, когда я действительно просто хочу вернуться к предыдущему шагу.
Как я могу заставить это работать? Я видел несколько примеров с использованием символа «#» и создания ссылок на странице, но не уверен, что есть лучший способ.
Какие-либо предложения?
Ответов (2)2
Если вам абсолютно не нужен 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);
}
}
Реализуйте ссылки, управляемые Ajax, совершенно ненавязчиво и доступно (также известное как Hijax) с поддержкой кнопок навигации назад / вперед и закладок браузера. Также улучшите сопоставимые ссылки, управляемые DHTML.