【问题标题】:Is it safe to pass anonymous type to MVC ViewData.Model?将匿名类型传递给 MVC ViewData.Model 是否安全?
【发布时间】:2008-12-28 21:25:27
【问题描述】:

是否可以进行以下操作:

View(new {Object A, Object B})

还是应该在新类型中显式声明对象 A 和对象 B?

谢谢。

【问题讨论】:

标签: c# asp.net-mvc model-view-controller


【解决方案1】:

是的,这样做很好。要获取这些值,您可以使用 ViewData.Eval("PropertyName") 并且现有的 Html 助手可以很好地使用它们。您唯一不能做的就是使用

对属性进行强类型访问

【讨论】:

    【解决方案2】:

    虽然匿名类型对于许多 MVC 用途是通用的,但在这种情况下,我会使用常规命名类,或者在推送时使用字典(或内置字典)。否则,您将不得不使用反射/TypeDescriptor 再次获取值。

    【讨论】:

    【解决方案3】:

    通过传递匿名类型,您不能拥有强类型视图。您还需要在单元测试中使用反射。

    【讨论】:

      【解决方案4】:

      我相信你至少想给他们起个名字:

      var model = new 
      {
          ObjectA = new A(),
          ObjectB = new B(),
      };
      
      
      view(model);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 2012-02-11
        • 1970-01-01
        • 2018-02-14
        • 2010-09-18
        • 1970-01-01
        • 2021-09-14
        • 2015-12-21
        相关资源
        最近更新 更多