C# 检索在视图内部设置的ViewBag值
如何才能在基本控制器、动作过滤器等位置读取例如ViewBag.Title。在视图设置后,?您不能,ViewBag的目的是将数据从控制器发送到视图,您不能使用此容器执行任何其他操作C# 检索在视图内部设置的ViewBag值,c#,asp.net-mvc,C#,Asp.net Mvc,如何才能在基本控制器、动作过滤器等位置读取例如ViewBag.Title。在视图设置后,?您不能,ViewBag的目的是将数据从控制器发送到视图,您不能使用此容器执行任何其他操作 请参阅:ViewBag的目的是将数据从控制器发送到视图,而不是反向发送。Viewbag提供对作为动态属性的数据的访问 另一方面,例如在基本控制器和动作过滤器中,我们可以从ActionExecutingContext或ActionExecutedContext变量获取数据 我们还可以在ActionFilters中设置数据
请参阅:ViewBag的目的是将数据从控制器发送到视图,而不是反向发送。Viewbag提供对作为动态属性的数据的访问 另一方面,例如在基本控制器和动作过滤器中,我们可以从ActionExecutingContext或ActionExecutedContext变量获取数据 我们还可以在ActionFilters中设置数据,如下所示
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext != null)
{
//set vlaue in context
filterContext.RouteData.DataTokens.Add("VariableName", "Value of variable");
//Log information
Log("OnActionExecuting", filterContext.RouteData);
}
}
重定向后您无法阅读
ViewBag
,在您的场景中,您必须使用会话
。感谢您的回复。重定向是什么意思?意思是Viewbag
只用于从控制器发送数据以查看它。当您重定向到其他操作或控制器时,它会丢失其值,即使您不能在操作筛选器和basecontroller中使用它,而改为使用会话。明白了!谢谢我的方案是记录所有访问页面的标题。有什么好办法可以做到这一点吗?再次感谢所有访问页面的日志标题
。。。在我看来,你可以使用一些客户端的东西来代替会话。你可以将这些日志写在一个文件中并从中读取,或者你可以使用sessionStorage
或localStorage
或cookies来实现这一目的。