我是asp.net mvc的新手,现在我的dropdownlist面临此问题。
对不起,如果我问一个愚蠢的问题。
我有一个主视图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
正在更新。
因此,请帮助我向此下拉列表添加一个项目,该项目位于我的第一个局部视图的第二个局部视图中,而不刷新整个视图。
任何的想法?
参考方案
假设您的方法正在返回对象的集合,然后将选项创建并附加到<select>
var select = $('#drpTrajectory') // cache it
$.ajax({
type: "POST",
url: '@Url.Action("DeleteAction", "AbcView")',
data: { deleteTraj: trajID },
dataType: "json",
success: function (data) {
select.empty() // if you need to remove the existing options
$.each(data, function (index, item) {
// Create an option element
var option = $('<option></option>').val(item.id).text(item.name);
// append it to the select element
select.append(option);
})
},
....
});
旁注
始终使用@Url.Action()
来确保您的网址正确无误
产生的
无需stringify() the data and then add the
contentType`选项
您的控制器方法应返回匿名集合
仅包含您需要的2个属性的对象(没有意义
发回不使用的额外数据)
var data = dataList.Select(x => new { id = x.id, name = x.name });
return Json(data)
您对new SelectList(@Model.Trajectories, "Value", "Text")
的使用
提示属性Trajectories
已经存在IEnumerable<SelectListItem>
。如果是这样,那就没有了
与原始的创建相同的SelectList
只是使用
@Html.DropDownListFor(model => Model.TrajectoryName, Model.Trajectories, new { @class = "dropdown-leftandright", id = drpTrajectory" })
DropDownListFor()
方法已经创建id="TrajectoryName"
,因此没有真正的需要被覆盖
使用new { id = drpTrajectory" }
好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…
ddl在服务器中未更新-asp.net - javascript我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……
JS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null - javascriptJS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null我有2个文本框,由用户选择时由2个日期选择器填充,但是当我使用下面的javascript将其传递给actionresult时,虽然信息可以正确地从文本框中获取。 actionresult的参数显示为空。我该如何解决?码:@Html.La…
.NET C#Webbrowser填充输入,不带ID或类名 - javascript我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…
调试捆绑和版本化的javascript文件 - javascript我已经使用Bundleconfig.cs将我的JavaScript文件打包如下:bundles.Add(new ScriptBundle("~/bundles/resultscripts").Include( "~/Scripts/spectrum.js", "~/Scripts/notify.js"…