2012-05-21 84 views
0

这里的属性是我:“System.Dynamic.ExpandoObject”不包含名为“名称”

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

但我得到的错误“System.Dynamic.ExpandoObject”不包含属性名称为“名称”。

listAddresses由10个项目组成。当我调试时,当我观察它们中的每一个时,我会进入动态视图,并且有名称和标识。如何解释这一点?

+0

我相信你需要转换到适当的对象类型,所有应该工作正常 –

回答

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

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

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); 
0

不能使用C#的动态功能,而无需使用dynamic关键字。所以:

var listAddreses = GetAddresses().ToList(); 

给你留下一个List<ExpandoObject>这确实真的没有任何你所提到的属性。 但是如果你说:

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

它应该工作。

相关问题