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

时间:2015-08-04 18:28:51

标签: .net asp.net-mvc

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

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

ThingNameIDontRemember.name =无论

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

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

1 个答案:

答案 0 :(得分: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

对于一般抓斗,您可以使用ExpandoObject

dynamic expando = new ExpandoObject();
expando.Foo = 10;
expando.Bar = "Some string";
Console.WriteLine(expando.Foo); // 10

动态打字比这还要多,但希望这就是你要找的东西。