Каковы лучшие практики для сохранения "состояния общения" в приложениях ASP.NET MVC? - PullRequest
1 голос
/ 02 мая 2010

Каков окончательный обходной путь?)

Желаемые сценарии:

  1. Многоступенчатые формы.
  2. Если на странице есть вкладки, вкладки должны сохранять свое `viewstate '
  3. Независимо от того, какой пользователь навигации выбрал, это не должно влиять (точнее, bother) на управление состоянием разговора.

Это всего лишь несколько аспектов, но я считаю их практически актуальными.

Ответы [ 3 ]

1 голос
/ 03 мая 2010

Вы также можете проверить http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx. В MVC Futures есть помощник Html.Serialize (). В статье это называется легковесным Viewstate, но по сути это просто прославленная оболочка «сериализации этого объекта и сохранения строки base64 в скрытом поле формы». Если вам нужно связать состояние с отдельными страницами, а не со всем сеансом, этот помощник может подойти для ваших нужд.

1 голос
/ 05 мая 2010

Не уверен насчет "обходного пути", но вы рассматривали возможность использования AJAX и jQuery? И то, и другое будет уместно, исходя из перечисленных вами требований.

1 голос
/ 02 мая 2010

Однажды я работал над формой мастера в Asp.Net MVC, и в этом случае лучше всего использовать Model / ModelBinding для отслеживания ввода формы.

Мы можем создать цепочку действий контроллера (для каждого шага) с выходной моделью каждого, служащей входной моделью для следующего шага (действия).

Например, если у нас есть три шага для создания пользователя. Тогда UserController может иметь действия для каждого шага.

public ActionResult Step1()
{
   User user = new User();
   return View(user);
}

[Post]
public ActionResult Step1(User user)
    {
       //perform business validation
        RedirectToAction<UserController>(u => Step2(user)); 

    }

После этого действие Step2 вступает во владение с измененным пользователем из Step1 и может отображать свое собственное представление и т. Д.

...