2017-02-21 21 views
0

Я пытаюсь заполнить раскрывающийся список через вызов ajax. Мой код работает нормально, пока я не верну результат (список объектов) в формате Json.Заполнить раскрывающийся список с помощью json и Entity Framework

Это моя сущность модель, которую я пытаюсь заполнить:

public partial class stkInvoicesTypesTbl 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public stkInvoicesTypesTbl() 
    { 
     this.stkInvoicesTbls = new HashSet<stkInvoicesTbl>(); 
    } 

    public int invTypesTableId { get; set; } 
    public string invTypeDesc { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<stkInvoicesTbl> stkInvoicesTbls { get; set; } //this property throw Exception and i think here is my problem 
} 

Вот мой Ajax вызова и код скрипта

var InvType = [] 

// fetch invoice type from database 
function LoadInvoiceType(element) 
{ 
    if (InvType.length == 0) { 
     //ajax function to fetch data 
     $.ajax({ 
      type: "GET", 
      url: '/InvoiceItm/getInvoiceType', 

      success: function (data) { 
       InvType = data; 

       renderInvoiceType(element); 
      }, 
      error: function (data) { 
       InvType = data; 
      } 
     }) 
    } 
    else { 
     //render invoice type to elements 
     renderInvoiceType(element); 
    } 
} 

function renderInvoiceType(element) 
{ 
    var $ele = $(element); 
    $ele.empty(); 

    $.each(InvType, function (i, val) { 
     $ele.append($('<option/>').val(val.invTypesTableId).text(val.invTypeDesc)); 
    }) 
} 

Мой контроллер действия:

public JsonResult getInvoiceType() 
{ 
     List<stkInvoicesTypesTbl> InvoiceTypes = new List<stkInvoicesTypesTbl>(); 

     using (iraqEntities dc = new iraqEntities()) 
     { 
      InvoiceTypes = dc.stkInvoicesTypesTbls.OrderBy(a => a.invTypeDesc).ToList(); 
     } 

     return new JsonResult { Data = InvoiceTypes, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

Мои вид:

<td><label for="input-text" class="col-sm-1 control-label">Invoice Type</label> </td> 
      <td> 
       <select type="text" id="InvoiceType" class="col-sm-3 form-control" onchange="LoadInvoiceType(this)"></select> 

      </td> 

Мой список правильно заполнен в контроллере, но когда я верну его обратно в json-формате (верните JsonResult ...), это ошибка возврата.

А вот некоторые скриншоты для моей отладки могут быть полезны:

return my data from database and fill my list in controller

this property is generated automatically from Entity Framework (foreign key relation) and it's throwing an exception so I think my problem lies here

Итак, кто может помочь мне в моей проблеме будет понятным

+0

привет, я думаю, вам нужно использовать include в вашем запросе. –

+0

Да, теперь это работа, спасибо вам, дорогая. – Moro

+0

приветствую. Надеюсь, я поставил его как ответ :) –

ответ

0

вам нужно Включить свойство stkInvoicesTbls в запросе

using (iraqEntities dc = new iraqEntities()) 
    { 
     InvoiceTypes = dc.stkInvoicesTypesTbls 
         .Include("stkInvoicesTbls") 
         .OrderBy(a => a.invTypeDesc) 
         .ToList(); 
    } 
+0

Я пробовал, и это дало мне синтаксическую ошибку: невозможно преобразовать выражение лямбда для ввода «string», потому что это не тип делегата. @Ahmed Ragheb – Moro

+0

@Moro я отредактировал ответ –

+0

сейчас это работает благодаря большому количеству @Ahmed Ragheb – Moro

 Смежные вопросы

  • Нет связанных вопросов^_^