将viewbag动态属性的值设为null

时间:2014-12-16 10:20:54

标签: c# view asp.net-mvc-5 controllers

我在我的控制器的Login操作方法中存储了一个名为login的动态属性中的值,我在Index视图中访问viewbag的值。我得到的值为null。为什么会这样。?

以下是我的代码,它位于控制器登录操作方法中。

ViewBag.Login = "false";
return RedirectToAction("Index");

这是我在索引视图(cshtml)中使用的代码。

@if (@ViewBag.Login != "")

在这里,我得到@ViewBag.Login的值为null。即使我删除像这样的@符号

ViewBag.Login  Still I get value as null. 

请帮忙。 ViewBag应该在绑定到同一控制器的视图和操作方法中保持值。

2 个答案:

答案 0 :(得分:1)

ViewBag不会在http请求中保留。

你可以做到

public ActionResult Login()
{
   /* Pass `Login` by QueryString */
   return RedirectToAction("Index", new { Login = false });
}

public ActionResult Index(bool Login) 
{
   /* Read from QueryString, and pass the value to `ViewBag` */
   ViewBag.Login = Login;
   return View();
}

答案 1 :(得分:1)

ViewBag赢得了RedirectToAction。您可以使用TempData,只能访问一次:

TempData["Login"] = "false";
return RedirectToAction("Index");