C# 获取viewbag动态属性';s值为空
我在控制器中的登录操作方法中,在名为login的动态属性中存储一个值,并在索引视图中访问viewbag的值。我将该值设置为null。为什么会这样 下面是我在控制器登录操作方法中的代码C# 获取viewbag动态属性';s值为空,c#,view,asp.net-mvc-5,controllers,C#,View,Asp.net Mvc 5,Controllers,我在控制器中的登录操作方法中,在名为login的动态属性中存储一个值,并在索引视图中访问viewbag的值。我将该值设置为null。为什么会这样 下面是我在控制器登录操作方法中的代码 ViewBag.Login = "false"; return RedirectToAction("Index"); 这是我在索引视图(cshtml)中使用的代码 在视图中,我得到@ViewBag.Login的值为空。即使我像这样删除@符号 ViewBag.Login Still I get value as
ViewBag.Login = "false";
return RedirectToAction("Index");
这是我在索引视图(cshtml)中使用的代码
在视图中,我得到@ViewBag.Login
的值为空。即使我像这样删除@符号
ViewBag.Login Still I get value as null.
请帮忙。ViewBag应在绑定到同一控制器的视图和操作方法中保留值。
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();
}
ViewBag
将无法跨重定向到操作
。您可以使用TempData
,可以只访问一次:
TempData["Login"] = "false";
return RedirectToAction("Index");
ViewBag
用于将值从控制器传递到视图。但是您正在重定向,并且该值丢失。您可以将该值分配给TempData
,在Index()
方法中检索该值,然后将其分配给ViewBag
。或者只需return View()
即可,而不必重定向。@X.L.Ant:成功了。谢谢……或者,在第一个示例中,将登录名存储在TempData而不是ViewBag中。
TempData["Login"] = "false";
return RedirectToAction("Index");