C# 什么填充ViewData[“内容”或ViewData[“标题”]

C# 什么填充ViewData[“内容”或ViewData[“标题”],c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我遇到了一段我不理解的代码。我们正在使用foreach遍历ViewData[“Content”],但我看不出它是从哪里填充的。问题出现了,因为我们在生产中遇到了一个错误,但当我尝试在本地调试时,它工作正常。我已签入应用程序,但ViewData[“内容”]未在任何位置设置 我有点像 foreach (var contentType in (List<AppCode.ContentType>)ViewData["Content"]){ ....} foreach(列表中的var con

我遇到了一段我不理解的代码。我们正在使用foreach遍历ViewData[“Content”],但我看不出它是从哪里填充的。问题出现了,因为我们在生产中遇到了一个错误,但当我尝试在本地调试时,它工作正常。我已签入应用程序,但ViewData[“内容”]未在任何位置设置 我有点像

foreach (var contentType in (List<AppCode.ContentType>)ViewData["Content"]){ ....}
foreach(列表中的var contentType)ViewData[“Content”]){
有人能遮光吗

我希望看到像这样的东西
ViewData[“content”]=“blablablaba”
ViewData[“Header”]=“lalal”
但我在应用程序中的任何地方都看不到它。

正如,ViewData是一个字典,其中包含要在控制器和视图之间传递的数据

这主要是在
控制器
方法中设置的,如下所示:

ViewBag.Content = "some text";
ViewData["Content"] = "some text";
或者像这样:

ViewBag.Content = "some text";
ViewData["Content"] = "some text";
ViewData和ViewBag用于相同的目的——将数据从控制器传输到视图。ViewData只是一个对象字典,可以通过字符串作为键访问它。它们用于从控制器->视图->部分视图访问相同的值

两者都是
ViewPage
类的一部分


因此,根据代码的其他部分,您应该查找用于渲染视图的控制器方法,或者将部分渲染为ViewBag的视图和ViewData可以作为参数传递。

可能在某些“内容”或“标题”属性的某处有[ViewData]属性。这可从ASP.NETCore2.1获得

public class HomeController : Controller
{
    [ViewData]
    public string Title { get; set; }

    public IActionResult About()
    {
        Title = "About Us";
        ViewData["Message"] = "Your application description page.";

        return View();
    }
}

ViewData用于在控制器和视图之间传递信息。它必须从返回视图的控制器上的
ActionMethod
的某个执行路径获取其值。如果没有更多的代码,就不可能再深入了。谢谢,但这就是为什么我问这个问题,基本上没有设置ViewData[“Content”]的地方。像ViewData[“Content”]=“blabla”。所以我想知道ViewData[“content”]或ViewData[“Header”]是否是MVC类型的属性我不知道默认MVC实现中设置ViewData的任何内容。如果设置了,它必须来自代码中的某个地方,或者来自您正在使用的某个第三方库。不管怎样,我们都看不到你的代码,所以我们帮不了什么忙。谢谢,没关系。突然,向当前上下文添加内容是否会将其添加到viewdata中?我知道,但这就是为什么我要问我找不到任何地方可以设置它。如果没有设置值的代码,viewdata中没有默认值,因此代码中一定有一些设置器。没有进一步的信息,很难说出更多