【发布时间】:2017-02-14 14:39:33
【问题描述】:
我正在尝试清空由 Dropdownlistfor 创建的下拉列表
@Html.DropDownListFor(model => model.Id2, (List<SelectListItem>)ViewBag.List2)
更改另一个下拉列表的选定值后
@Html.DropDownListFor(model => model.Id1, (List<SelectListItem>)ViewBag.List1)
这是我的javascript代码
function changeList(value, that) {
//value is equal to the selected value of List2
var self = $(that).find("#Id2");
$.ajax({
url: '@Url.Action("method", "controller")',
method: 'POST',
data: { 'value': value },
dataType: 'json',
success: function (data, textStatus, jqXHR) {
self.empty();
$.each(data, function (key, item) {
self.append($("<option></option>").val(item.Value).text(item.Text));
});
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}
我的问题是,当我更改 List1 的选定值时,它设法更改了 List2 的选项,但它不显示它。
当我在更改 List1 的选定值之前没有单击或与 List2 进行任何交互时,它可以工作。
如果我更改列表 2 的选定值,然后更改列表 1 的选定值,则不会。(它可以工作,但不会正确显示到视图)。
编辑
=>我的 javascript 工作
编辑 2
我在控制器中的方法
[HttpPost]
public JsonResult method(long value)
{
try
{
var items= GetItems(value);
return Json(new List<SelectListItem>(items));
}
catch (Exception ex)
{
return Json(new { Result = Error, ex.Message });
}
}
【问题讨论】:
-
在 ajax 调用代码中调用的控制器操作是什么样的?
-
帖子编辑(见编辑2)
-
你在哪里以及如何打电话
changeList()?
标签: javascript jquery ajax asp.net-mvc