2013-12-15 58 views
2

在我的MVC 4應用程序中,我想用Ajax結果填充Html.LisboxFor。如何使用mvc填充Ajax結果的Html.Listbox 4

筆者認爲: @using(Html.BeginForm( 「UpdatePriority」, 「優先級」,FormMethod.Post)){

@Html.Hidden("myListBoxValuesValues") 

    <div class="row"> 

     <div class="col-md-2"> 
      <label>FA:</label> 
      @Html.ListBoxFor(m => m.FA, new MultiSelectList(@Model.FA), new { @class = "lbx_FA" }) 
     </div> 

     <div class="col-md-1"> 
      <input id="btnAdd" type="button" value=" > " onclick="addItem();" /> 
     </div> 

     <div class="col-md-2"> 
      <label>CEID list:</label> 
      @Html.ListBoxFor(model => model.CEIDs, new MultiSelectList(Model.CEIDs), new { @class = "lbx_CEIDs" }) 
     </div> 

...and so on.. 

我我的控制器功能(JSON模式的回報字符串):

public string getCeidPerFA(string FA) 
     { 
      return unitOfWork.ToolRequiredRepository.getCEIDsPerFA_Scenario(DAL.UnitOfWork.Scenario, FA); 
     } 

的庫函數:

internal string getCEIDsPerFA_Scenario(string scenario, string FA) 
     { 
      //create the result list (FAs): 

      List<string> FAs = FA.Split(',').ToList(); 

      var CEIDs = from row in context.ToolRequireds 
         where row.Scenario == scenario && FAs.Contains(row.FA) 
         select row.CEID; 

      List<string> lst = CEIDs.Distinct().ToList(); 

      //create Json Result: 

      List<SelectListItem> items = new List<SelectListItem>(); 

      foreach (var ceid in lst) 
      { 
       items.Add(new SelectListItem { Text = ceid, Value = ceid }); 
      } 


      return Json.Encode(items); 
     } 

我的腳本:

function addItem() { 

    var result = ""; 

    var x = document.getElementById("FA"); 
    for (var i = 0; i < x.options.length; i++) { 
     if (x.options[i].selected == true) { 
      result += x.options[i].value + ","; 
     } 
    } 

    result = result.substring(0, result.length - 1); 

    $.ajax({ 

     url: "@(Url.Action("getCeidPerFA", "CeidSelection"))", 

     data: { "FA": result }, 

     success: function (data) { 


      if (data.length > 0) { 
       JSON.pa 
       $("#CEIDs").append(JSON.parse(data)); 
      } 
      else 
       alert("No Result"); 
     }, 

     error: function (xhr) { 

      alert("Something went wrong, please try again"); 

     } 

    }); 
} 

我的代碼是錯誤的,但我不知道該怎麼做。 任何幫助將非常感激。

回答

3

遍歷數據導致這樣

$('#CEIDs').empty(); 
$.each($(data), function(key, value) { 
    $('#CEIDs').append('<option value=' + key + '>' + value + '</option>'); 
}); 
+0

我改變了我的函數返回一個JsonResult。我創建了這樣的JsonResult: JsonResult js = new JsonResult(){Data = items,JsonRequestBehavior = JsonRequestBehavior.AllowGet}; 然後我在ajax成功裏面使用你的代碼。現在我在列表框中看到的所有內容都是:「[object Object]」。我看不到Json的實際值。 – user3087881

+0

,它告訴我你有列表項但沒有值。如果您使用螢火蟲查看對象,您應該能夠確定需要查看的名稱。應該是像value.key和value.value,無論你在這些領域上有什麼名字 –

+0

Thx!有用。 我使用了你的提示,並使用chrome開發工具設法調試Json並進行prorper調整。 – user3087881