Когда использовать TempData vs Session в ASP.Net MVC
Я пытаюсь освоить MVC Framework, так что терпите меня.
Прямо сейчас, единственное, что яm использует хранилище сеансов для сохранения текущего вошедшего в систему пользователя. Мой сайт прост. В этом примере рассмотрим три объекта домена: Person, Meeting и File. Пользователи могут войти и просмотреть "только для членов" профиль встречи и можете добавлять к ней файлы или просматривать собрание »с публикой "профиль" если они неЯ вошел.
Итак, со встречис личным профилем, с зарегистрированным пользователем, у меня есть "добавить файлы" ссылка на сайт. Эта ссылка ведет к FileContoller.Add (int meetingId). Из этого действия я получаю собрание, к которому пользователь хочет добавить файлы, используя идентификатор собрания, но после публикации формы мне все еще нужно знать, к какому собранию пользователь добавляет файлы. Тот'где мой вопрос, я должен пройтив настоящее время взаимодействует с " встреча через TempData или добавить его в хранилище сеансов?
Вот так у меня сейчас есть настройка Add action, но этоне работает:
public ActionResult Add(int meetingId)
{
try
{
var meeting = _meetingsRepository.GetById(meetingId);
ViewData.Model = meeting;
TempData[TempDataKeys.CurrentMeeting] = meeting; /* add to tempdata here */
}
catch (Exception)
{
TempData[TempDataKeys.ErrorMessage] = "Unable to add files to this meeting.";
return RedirectToRoute("MeetingsIndex");
}
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
var member = Session[SessionStateKeys.Member] as Member;
var meeting = TempData[TempDataKeys.CurrentMeeting] as Meeting; /* meeting ends up null here */
if (member == null)
{
TempData[TempDataKeys.ErrorMessage] = "You must be logged in to add files to an meeting.";
return RedirectToRoute("LoginPage");
}
if (meeting == null)
{
TempData[TempDataKeys.ErrorMessage] = "An error occurred. No meeting selected.";
return RedirectToRoute("MeetingsIndex");
}
// add files to meeting
TempData[TempDataKeys.Notification] = "Successfully added.";
return RedirectToRoute("AddFiles", new {meetingId = meeting.MeetingId});
}
Редактировать:
Основываясь на большинстве ответов, может ли кто-нибудь привести примеры того, какие данные (кроме сообщений) следует хранить в TempData vs Session?