刷新MVC下拉列表

时间:2015-08-11 16:21:35

标签: c# jquery asp.net-mvc-5

我想从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);
        }
    }

这是调用POST方法获取更新的应用程序列表的jQuery函数:

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&#39;)下拉列表包含新列表,而不必循环遍历作为JSON重定的列表?是否可以返回列表的html(applicationList)并只使用刷新html $(&#39; .applicationSelector&#39;)HTML(数据)。 ?

1 个答案:

答案 0 :(得分:2)

您需要为每件商品附加<option>。 这是从this post得到的答案,它提供了一个非常简单和直接的例子。

$.each(selectValues, function(key, value) {   
 $('#mySelect')
      .append($('<option>', { value : key })
      .text(value)); 
});

var selectValues是你的JSON列表