这个东西在.net中叫什么?

use*_*993 1 .net asp.net-mvc

我记得有一段时间,我正在开发一个基于C#razor的网页.有一个响应属性,作为控制器和页面之间的一种管道.我不知道它叫什么,但它有一个有趣的属性 -

基本上它就像一个字典(字符串,对象),所以你可以通过任何名称转储任何名称,除非你像这样使用它:

ThingNameIDontRemember.name =无论如何

在添加了我想要的东西之后,我认为它们甚至出现在另一侧的intellisense自动完成中(与您对通用对象的期望不同)

这个类型叫什么,它是否也可以在mvc bundle之外使用?在我目前的vb.net项目中,我真的会使用类似的东西.

Jon*_*eet 7

我想你正在寻找ViewBag.

ViewBag属性使您可以动态地将控制器中的值共享到视图.它是一个动态对象,这意味着它没有预定义的属性.ViewBag只需将属性添加到属性中即可定义要拥有的属性.在视图中,您可以使用属性的相同名称检索这些值.

更一般地说,C#4引入了使用dynamic类型的动态类型 - 如果表达式是类型dynamic,绑定(计算出名称的含义)直到执行时才会发生.例如:

dynamic d = "foo";
Console.WriteLine(d.Length); // Uses string.Length
d = new int[10];
Console.WriteLine(d.Length); // Uses the array Length
Console.WriteLine(d.Bang()); // Compiles, but will throw at execution time
Run Code Online (Sandbox Code Playgroud)

对于一般的抓包,您可以使用ExpandoObject:

dynamic expando = new ExpandoObject();
expando.Foo = 10;
expando.Bar = "Some string";
Console.WriteLine(expando.Foo); // 10
Run Code Online (Sandbox Code Playgroud)

动态类型比这更多,但希望这就是你要找的东西.