gpt4 book ai didi

c# - 使用 ViewData Dictionary 和 ViewBag 的部分参数删除 ViewBag 数据

转载 作者:行者123 更新时间:2023-11-30 16:55:30 27 4
gpt4 key购买 nike

我需要将一些信息传递给部分 cshtml View 。为此,我使用了 ViewDataDictionaryViewBag

public ActionResult TaskPage(int ID = 0)
{
ViewBag.breadcrumbs = new string[] {
"List", "Tasks"
};
ViewBag.title = "Editing - My selected itemd";
ViewBag.id = ID;
return View();
}

然后在组装 View 时我也传递了一个 ViewDataDictionary:

@Html.Partial("~/Views/Components/_Header.cshtml", new ViewDataDictionary { { "role", "task-page" } })

我的 _Header.cshmtl 文件同时使用了这个字典和 ViewBag

  ViewBag.breadcrumbs = ViewBag.breadcrumbs != null ? ViewBag.breadcrumbs : new string[] { };
var role = ViewData["role"];

令我惊讶的是,当我传递 ViewDataDictionary 时,ViewBag 也不包含任何数据。这怎么可能?知道如何更好地处理这个问题吗?

最佳答案

查看此帖子 What's the difference between ViewData and ViewBag?

看起来“内部 ViewBag 属性作为名称/值对存储在 ViewData 字典中。”这表明您在传递新的 ViewDataDictionary 对象时覆盖了 ViewBag

取自this blog post

public dynamic ViewBag 
{
get
{
if (_dynamicViewData == null)
{
_dynamicViewData =
new DynamicViewDataDictionary(() => ViewData);
}
return _dynamicViewData;
}
}

关于c# - 使用 ViewData Dictionary 和 ViewBag 的部分参数删除 ViewBag 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29368216/

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