gpt4 book ai didi

c# - 多个 View 中相同的 viewbag 值

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:20 25 4
gpt4 key购买 nike

所以我的 _Layout.cshtml 文件中有一个搜索栏,它需要所有类别的列表才能进行过滤。

问题是我将我的类别列表放在 View 包中并且必须这样做

List<categories> categories = db.categories.ToList();
ViewBag.categories = categories;

在每个 View 中,甚至在那些不会使用此列表的 View 中也是如此。

有什么解决办法吗?

最佳答案

有点不清楚您要解决什么问题,但是如果 _Layout.cshtml 需要您需要从每个 Controller 传递它的值,否则您可能会在运行时遇到异常-时间,因为 ViewBag 是空的。

一个解决方案是创建一个基类 Controller 并覆盖 OnResultExecuting 方法。

public class BaseController : Controller
{
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
// In case you're doing any AJAX calls there's no sense in
// incurring the overhead of filling the ViewBag.
if(!Request.IsAjaxRequest)
{
List<categories> categories = db.categories.ToList();
ViewBag.categories = categories;
base.OnResultExecuting(filterContext);
}
}
}

现在只需确保应用程序中的每个 Controller 都继承自 BaseController

关于c# - 多个 View 中相同的 viewbag 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com