【发布时间】:2016-11-02 04:55:18
【问题描述】:
我是 asp.net mvc 的新手,我现在正面临下拉列表的这个问题。 对不起,如果我问了一个愚蠢的问题。
我有一个主视图 AbcView,它绑定到控制器 AbcController,控制器将 AbcModel 传递给视图。
我在这个 AbcView 中有 2 个部分视图,它们在按钮点击时加载。
在第二个局部视图中,我有这段代码:
@Html.DropDownListFor(model => Model.TrajectoryName, new SelectList(@Model.Trajectories, "Value", "Text"),
new { @class = "dropdown-leftandright", id = drpTrajectory" })
在第一个部分视图中,我有一些数据正在添加到数据库中,点击一些按钮,如下所示:
function deleteAction(trajID) {
$.ajax({
type: "POST",
url: "/AbcView/DeleteAction",
data: JSON.stringify({ deleteTraj: trajID }),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
// I want to update the drpTrajectory dropdownlist here
},
error: function (e) {
return "error";
}
});
}
我的问题是我想在此函数内的第二个局部视图中访问 drpTrajectory。我想在这个特定的下拉列表中添加一些项目。
我尝试使用$('#drpTrajectory') 访问下拉列表并尝试添加一个项目。但它失败了。
我尝试添加这样的数据
$('#drpTrajectory ').add(val(data.x).text(data.y));
data 将成为 IEnumerable<SomeClass> dataList 和 SomeClass 的成员,其中包含 id 和 name,它们可以分别是值和文本。
我已经在单击按钮期间更新模型数据,即 @Model.Trajectories 正在更新。
所以请帮助我将一个项目添加到此下拉列表中,该项目位于我的第一个部分视图的第二个部分视图中,而无需刷新整个视图。 有什么想法吗?
【问题讨论】:
-
显示您尝试添加它的方式。
data包含什么? (添加一个选项$('#drpTrajectory').append($('<option></option>').val(data.x).text(data.y));) -
<option></option>是什么意思?我理解了价值和文字部分。我试过这样的$('#drpTrajectory ').add(val(data.x).text(data.y));。 @StephenMuecke -
您应该在问题中表明这一点以便给出答案,并指出
data是什么以及您使用它的哪些属性来添加新选项 -
我已编辑。请立即查看@StephenMuecke
-
给我 15 分钟,我会添加一个答案(您的代码中还有其他一些可以改进的地方) - 但您已经注意到
data是一个序列化的IEnumerable<SomeClass>- 您想向下拉列表中添加多个选项吗?
标签: javascript c# asp.net-mvc html asp.net-mvc-4