'System.Dynamic.ExpandoObject'不包含名称为'Name'的属性

时间:2012-05-21 12:28:49

标签: c# dynamic expandoobject

这就是我所拥有的:

var listAddresses = GetAddresses().ToList();
return Json(new JsonResult { Data = new SelectList(listAddresses, "Name", "Id") }, JsonRequestBehavior.AllowGet);

但我收到错误'System.Dynamic.ExpandoObject'不包含名为'Name'的属性。

listAddresses由10个项目组成。当我调试时,当我观察它们中的每一个时,我转到动态视图并且有名称和ID。如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

var listAddresses = GetAddresses().ToList();
var data = new 
{ 
    Data = new SelectList(listAddresses, "Name", "Id") 
};
return Json(data, JsonRequestBehavior.AllowGet);

Json(...)JsonResult,您不需要两者。

答案 1 :(得分:0)

尝试这样 - >

var listAddresses = GetAddresses().ToList(); 
        List<ListItem> addressList = new List<ListItem>();
        foreach (IAddress address in listAddresses )
            {
                ListItem items = new ListItem();
                items.Text = address.Name;
                items.Value = address.ID;
                addressList .Add(items);


            }
        }
    return Json(new JsonResult { Data = new SelectList(addressList, "Value", "Text") }, JsonRequestBehavior.AllowGet);

答案 2 :(得分:0)

如果不使用dynamic关键字,则无法使用C#的动态功能。所以:

var listAddreses = GetAddresses().ToList();

给你一个List<ExpandoObject>,它真的没有你提到的任何属性。 然而如果你说:

List<dynamic> listAddresses = GetAddresses().ToList();

它应该有用。