2015-08-11 2 views
1

Я хочу обновить MVC Dropdownlist из метода JsonResult.Обновить MVC Dropdownlist

Вот публичный метод, который возвращает результат:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    [CustomAuthorize] 
    public JsonResult GetHtmlApplicationSelectionList() 
    { 
     try 
     { 
      List<SelectListItem> applicationList = new List<SelectListItem>(); 
      SelectListItem defaultApplicationValue = new SelectListItem(); 

      defaultApplicationValue.Value = "0"; 
      defaultApplicationValue.Text = "-- Select Application --"; 
      defaultApplicationValue.Selected = true; 

      applicationList.Add(defaultApplicationValue); 

      foreach (var app in businessLogic.GetApplications().Select(x => new SelectListItem { Value = x.ID.ToString(), Text = x.Name })) 
      { 
       applicationList.Add(app); 
      } 

      return Json(new { result = "success", list = applicationList }, JsonRequestBehavior.AllowGet); 
     } 
     catch(Exception ex) 
     { 
      return Json(new { result = "failure", message=ex.Message}, JsonRequestBehavior.AllowGet); 
     } 
    } 

А вот функция JQuery, которая вызывает метод POST, чтобы получить обновленный список приложений:

function UpdateApplicationList() { 
    $.ajax({ 
     url: 'Global/GetHtmlApplicationSelectionList', 
     type: 'POST', 
     dataType: 'json', 
     success: function (data) { 

      $('.applicationSelector').html(''); 

      $('.applicationSelector').html(data); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert(xhr.responseText); 
     } 
    }); 
} 

Как я могу заставить $ (. applicationSelector '), чтобы содержать новый список, не зацикливая список, сохраненный как JSON? Возможно ли вернуть html списка (applicationList) и просто обновить html с помощью $ ('. ApplicationSelector'). Html (data); ?

+1

В чем проблема перебрать в списке? Вы можете вернуть HTML из своего действия, но таким образом вы увеличите трафик между клиентом и сервером. – ssimeonov

+0

В списке нет проблем. Я думаю, что было бы проще вернуть его как html для простоты использования, а не для создания контура клиентской стороны (jQuery), чтобы каждый раз воссоздавать список. – codeg

+2

Затем возникает вопрос, который имеет лучшую производительность: цикл на стороне клиента (js или jquery) или пытается отобразить некоторую строку html на сервере и передать ее моему