在ASP .NET MVC Razor视图中,我有一个下拉列表,如下所示:
@Html.DropDownListFor(model => model.SelectedDeviceModel, Model.DeviceModelList)
DeviceModelList只是一个SelectList。
如何根据客户端操作(例如单击按钮或使用Javascript / jQuery/Ajax进行的其他下拉选择)动态填充DeviceModelList?
您可以将此下拉列表局部化:
@model MyViewModel
@Html.DropDownListFor(model => model.SelectedDeviceModel, Model.DeviceModelList)
然后在主视图中将其包含在某个容器中:
@model MyViewModel
...
<div id="ddlcontainer">
@Html.Partial("Foo", Model)
</div>
...
那么您可能会有一个控制器动作,该动作需要一些参数,并根据其值呈现此部分参数:
public ActionResult Foo(string someValue)
{
MyViewModel model = ... go ahead and fill your view model
return PartialView(model);
}
现在,最后一部分是在发生某些事件时发送AJAX请求以刷新下拉列表。例如,当某些其他ddl的值发生更改(或其他更改,单击按钮或其他操作)时:
$(function() {
$('#SomeOtherDdlId').change(function() {
// when the selection of some other drop down changes
// get the new value
var value = $(this).val();
// and send it as AJAX request to the newly created action
$.ajax({
url: '@Url.Action("foo")',
type: 'POST',
data: { someValue: value },
success: function(result) {
// when the AJAX succeeds refresh the ddl container with
// the partial HTML returned by the Foo controller action
$('#ddlcontainer').html(result);
}
});
});
});
另一种可能性是使用JSON。您的Foo
控制器操作将仅返回一些包含新键/值集合的Json对象,并且在AJAX请求的成功回调中,您将刷新下拉列表。在这种情况下,您无需将其外部化为单独的部分。例如:
$(function() {
$('#SomeOtherDdlId').change(function() {
// when the selection of some other drop down changes
// get the new value
var value = $(this).val();
// and send it as AJAX request to the newly created action
$.ajax({
url: '@Url.Action("foo")',
type: 'POST',
data: { someValue: value },
success: function(result) {
// when the AJAX succeeds refresh the dropdown list with
// the JSON values returned from the controller action
var selectedDeviceModel = $('#SelectedDeviceModel');
selectedDeviceModel.empty();
$.each(result, function(index, item) {
selectedDeviceModel.append(
$('<option/>', {
value: item.value,
text: item.text
})
);
});
}
});
});
});
最后,您的Foo控制器动作将返回Json:
public ActionResult Foo(string someValue)
{
return Json(new[] {
new { value = '1', text = 'text 1' },
new { value = '2', text = 'text 2' },
new { value = '3', text = 'text 3' }
});
}
我创建了一个动态下拉列表。我想访问从动态创建的下拉列表中选择的值。我的超文本标记语言文件 我的js文件: 单击按钮,就会调用js文件中存在的doThis()函数。在该函数中,我想访问在第二个(城市列表)下拉列表中选择的值。
问题内容: 我有以下jQuery代码。我可以从server获得以下数据。我该如何对此进行迭代,并用 另外,使用和之间有什么区别。 问题答案: 这应该可以解决问题: 这里的区别和(从jQuery的文档): [getJSON]是Ajax的简写功能,等效于: 编辑:要明确,部分问题是服务器的响应返回的是如下所示的json对象: …因此该属性需要使用手动解析。
问题内容: 就像标题中所说的那样,尽管我对尚未付诸实践的理论很熟悉,但我仍在尝试使用jQuery,JSON和AJAX创建下拉菜单,因此,任何建议,演示代码段或教程都将不胜感激,因为我想开始最好的开始! 提前感谢! 问题答案: 您需要执行$ .getJSON调用以从document.load或其他一些事件http://api.jquery.com/jQuery.getJSON/上的服务器中获取jso
问题内容: 我知道如何使用纯PHP来做到这一点,但是我需要在不重新加载页面的情况下做到这一点。无论如何,jQuery是否可以有效地拉回一些数据库结果(基于用户在表单的第一个文本字段中输入的内容),然后使用从db查询中拉回的数据填充其余的字段? 从本质上讲,我希望用户离开文本字段(通过跳出或单击下一个字段)而离开,然后使用该字段中输入的值提交查询,然后使用w /重新加载页面。 我熟悉jQuery的基
问题内容: 我有以下问题: 我开始用HTML和JS创建表单,并且有两个下拉菜单(国家和城市)。现在,我想使用JQuery使这两个动态,以便仅显示所选国家/地区的城市。 我从一些基本的JS入手,但效果不错,但在IE中却有些麻烦。现在,我正在尝试将JS转换为JQuery,以获得更好的兼容性。 我原来的JS看起来像这样: 我知道这很简单,但是我看不到树木的木头。 问题答案: 它应该像
问题内容: 我正在开发一个下拉菜单,该菜单使用HTML optgroups作为员工所属的组名。这是MySQL查询和输出: 唯一的问题是,我很难确定如何使optgroup正常工作。我尝试了无数次,这真的开始让我感到沮丧。 以下是我想要的输出示例(示例): 基本上,optgroup必须是“ groupname”,选项“ name”应该是“ emp_id”,而动作“ option”(下拉项)是“ emp