2013-08-28 2 views
4

Я установил значение в Viewbag.message в мой домашний центр по умолчанию и успешно отобразил его в моем Shared/_Layout.cshtml.MVC Передача значения ViewBag с другого контроллера

После этого я добавил еще один TestController и в представлении TestController Viewbag.message кажется нулевым. Могу я узнать, что с ним не так.

Исправьте меня, если я ошибаюсь, из моего понимания Viewbag.Message должен быть доступен со всех уголков?

+0

для этой точки зрения TestController также у вас есть к тому, что вы сделали для Viewbag.message в моем умолчанию HomeController – Backtrack

ответ

19

ViewBag - динамическое свойство, которое использует преимущества новых динамических функций в C# 4.0. В основном это оболочка вокруг ViewData, а также используется для передачи данных от контроллера к соответствующему виду.

  • Это жизнь также лежит только во время текущего запроса. Если перенаправление происходит, то это значение становится нулевым.
  • Для сложных типов данных не требуется типизация.

Ниже приведена сводная таблица, которая показывает различные механизмы сохранения. Summary of ViewBag and the other mechanismCredit:CodeProjectArticle

+3

с помощью 'TempData.Keep' сохраняет данные из поля зрения в контроллер и контроллер для Посмотреть. –

5
[HttpPost] 
public ActionResult Index() 
{ 
    TempData["Message"] = "Success"; 
    return RedirectToAction("Index"); 
} 


public ActionResult Index() 
{ 
    VieBag.Message=TempData["Message"]; 
    return View(); 
} 
0
//one controller to another controller you need to use seesion 
//this is Home controller 

[httpPost] 
public actionresult Index() 
{ 
    session["Message"] = "Welcome to session tutorial"; 
    return redirectToAction("Index","About"); 
} 

//now pass to the another About controller 

[httpPost] 
public actionresult About() 
{ 
    viewbag. message = session["Message"] 
    return view(); 
} 
Смежные вопросы