2012-05-21 1 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 пунктов. Когда я отлаживаю, когда я смотрю каждый из них, я перехожу к Dynamic View, и есть имя и идентификатор. Как это сделать?

+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(); 

Он должен работать.