刷新MVC下拉列表

本文关键字:下拉列表 MVC 刷新 | 更新日期: 2023-09-27 18:07:31

我想从JsonResult方法刷新MVC下拉列表。

下面是返回结果的公共方法:
    [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')下拉列表包含新的列表,而不必通过JSON返回的列表循环?是否有可能返回列表的html (applicationList),只是刷新html使用$ (' .applicationSelector ') . html(数据);div ?

您需要为每个项目附加一个<option>。这是从这篇文章中得到的答案,它提供了一个非常简单和直接的例子。

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

var selectValues是你的JSON列表

刷新MVC下拉列表