Использование ViewBag-ASP.NET MVC3 - PullRequest
1 голос
/ 03 ноября 2011

В моем контроллере скажите ControllerFirst Я устанавливаю свойство ViewBag в строке ниже.

ViewBag.PreviousPage="ThisIsComingFromControllerFirst";
return RedirectToAction("ControllerSecond", "Home");

Теперь отсюда:

public ActionResult ControllerSecond()
{
    return View();
}

Я пытаюсь использовать Viewbag в ControllerSecond следующим

Просмотр: ControllerSecond.cshtml

@if(ViewBag.PreviouPage == "SomeValue")
{
  //do this
}

Но ViewBag.PreviousPage значение равно нулю.

Пожалуйста, дайте мне знать, почему он нулевой, что я мог сделать, чтобы получить значение в моем представлении из ControllerFirst.

Я сделал это, используя Session, но мы не хотим сессий ..

Есть ли другие варианты?

Ответы [ 4 ]

3 голосов
/ 24 ноября 2011

Чтобы ответить на ваш первый вопрос, ViewBag - более удобная форма ViewData, которая использует динамические объекты, а не общие.Как и в случае ViewData, ViewBag существует только в течение жизни одного запроса, поэтому он доступен только между ActionMethod и его представлением.Это не доступно между различными ActionMethods.

Думайте об этом как о домофоне в доме.Вы можете отправлять сообщения в другие части дома, но не можете отправлять сообщения соседним домам.

Доступны только другие варианты:

  • Использовать сеанс
  • Использовать TempData (который также использует сеанс)
  • Использовать cookie
  • Использовать параметр строки запроса
  • Использовать промежуточную таблицу в вашей базе данных
  • Опубликовать в ActionMethod
1 голос
/ 03 ноября 2011

ViewBagViewData) - это объекты для доступа к дополнительным данным (т. Е. Вне модели данных) между контроллером и представлением.

Если ваши данные должны сохраняться между двумя последующими запросами, вы можете использовать TempData.

Однако TempData по умолчанию сохраняется в сеансе . Так что, если вы не хотите использовать сеансы, вы можете использовать куки и каким-то образом дублировать то, что сеанс делает для вас, как MikeSW предложил .

Когда использовать ViewBag, ViewData или TempData в приложениях ASP.NET MVC 3

0 голосов
/ 03 ноября 2011

Вы можете использовать куки и как-то дублировать то, что сессия делает для вас.

0 голосов
/ 03 ноября 2011

Использовать TempData вместо ViewBag

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