【问题标题】:MVC 4 Dynamic action method argumentMVC 4 动态操作方法参数
【发布时间】:2013-02-27 10:47:41
【问题描述】:

我有以下类定义:

public class CallGroupViewModel
    {
        public string Name { get; set; }
        public string BulkEmails { get; set; }
        public List<dynamic> Members {get;set;}

    }

Members 属性是一些动态剔除代码,内容会根据 UI 内容而变化。我想走捷径,因为 UI 现在还悬而未决。

我的问题是,当它到达我的操作方法时,所有内容都会被填充,包括成员,但它是 objects 的数组,我无法获取它们的各个属性。

public ActionResult SaveGroup(CallGroupViewModel group)

group.Members //this has a count
group.Members[0].email //this pukes as 'email' is not valid for 'object'

我可能只是遗漏了一些东西,感谢任何帮助。

谢谢!

【问题讨论】:

  • 你用什么设置Members?成员中的对象是否具有属性email(当然区分大小写)。
  • 它通过客户端上的 KnockoutJS 完成。本质上是这样的:{email:"",id:"",name:""}
  • 这样的group.Members.add(new {email ="",id ="",name=""})?我了解您想将此作为 Javascript 对象绑定到 KO,但我正在尝试了解 C# 部分。

标签: c# asp.net-mvc asp.net-mvc-4 knockout.js


【解决方案1】:

填充 MVC 操作方法参数的模型绑定系统不适用于动态对象。系统需要类型信息才能知道要绑定哪些信息。考虑更改您的模型以改用强类型。

【讨论】:

    【解决方案2】:

    要从对象访问动态属性,在您的情况下,您可以使用:

    var email = group.Members[0].GetType()
                                .GetProperty("Email")
                                .GetValue(group.Members[0], null); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多