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

问题描述 投票:0回答:2

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

c# asp.net-mvc razor
2个回答
1
投票

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


1
投票

你可以试试这个

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。

© www.soinside.com 2019 - 2024. All rights reserved.