刷新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列表