C#/ Asp.NET:在ViewData / ViewBag中设置数据是否有利于每个请求与调用操作方法获取数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#/ Asp.NET:在ViewData / ViewBag中设置数据是否有利于每个请求与调用操作方法获取数据?相关的知识,希望对你有一定的参考价值。

我正在尝试在_Layout.cshtml中显示用户的个人资料图像,但不确定是否应在ViewBag / ViewData中的每个请求中设置文件路径,或者创建一个返回文件路径的操作方法。这两种方法之间是否有任何性能考虑因素?

答案

好吧,如果您在ViewBag / ViewData中设置数据,则会在生成页面时处理此数据。如果您创建一个专用的操作方法,那意味着只需向Web服务器发出一个额外的请求。由于路径很短且关联数据很小,因此调用额外的控制器方法应该稍慢。

另一答案

你可以试试这个

public class GlobalViewBagFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
       filterContext.Controller.ViewBag.UserImage = "Your Image Path";
    }
}

将它添加到App_start文件夹上的FilterConfig中

 public class FilterConfig
 {
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
       filters.Add(new GlobalViewBagFilter ());
    }
  }

现在,您可以在应用程序中获取ViewBag.UserImage _Layout。

以上是关于C#/ Asp.NET:在ViewData / ViewBag中设置数据是否有利于每个请求与调用操作方法获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET-viewBag Viewdata Tempdata

asp.net MVC ViewData详解

ASP.NET MVC - 在基本控制器中为母版页设置 ViewData

是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?

如何通过 jQuery ajax 更新 ASP.NET MVC ViewData?

asp.net mvc 如何实现自动提交或保留用户未登录前得信息