C# 在MVC中不使用Ajax或Submit刷新视图/局部视图
我有一个ViewModel,其中包含不同类型的列表 第一次加载页面时,我希望根据所选下拉列表显示数据列表 当下拉列表更改时,我希望显示特定于该类型的数据列表 但是我不想转到我的控制器,因为在这种情况下,我需要执行搜索/查询,因为我首先已经在视图中拥有了所有类型 我该怎么做 任何建议C# 在MVC中不使用Ajax或Submit刷新视图/局部视图,c#,asp.net-mvc,asp.net-mvc-4,razor,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,Asp.net Mvc Viewmodel,我有一个ViewModel,其中包含不同类型的列表 第一次加载页面时,我希望根据所选下拉列表显示数据列表 当下拉列表更改时,我希望显示特定于该类型的数据列表 但是我不想转到我的控制器,因为在这种情况下,我需要执行搜索/查询,因为我首先已经在视图中拥有了所有类型 我该怎么做 任何建议 谢谢,如果您不想转到服务器Ajax\submit,则需要下载第一次响应中的所有数据,并使用javascript更改列表 当选择框出现时,javascript将需要获取所选值并更新新列表以对其进行操作 下面是一个例子:
谢谢,如果您不想转到服务器Ajax\submit,则需要下载第一次响应中的所有数据,并使用javascript更改列表 当选择框出现时,javascript将需要获取所选值并更新新列表以对其进行操作 下面是一个例子: HTML: JS:
.您的意思是先显示所有数据,然后隐藏不需要的数据?在jquery中使用hide/show?@ArijitMukherjee,这是唯一不需要调用控制器的方法,但是为什么不想这样做呢?我编辑并添加了一个小示例。我不确定这是否正是您想要的,但它将帮助您理解应该如何做到这一点。问题是,当我使用ajax时,我的值不会从一个视图持续到另一个视图不止一次。一次可以使用TempData实现。
<select id="s1"></select>
<select id="s2"></select>
var currData = ["1", "2", "3"];
var otherData = [
["a", "b", "c"],
["d", "e", "f"],
["g", "h", "i"]
]
for (var i = 0; i < currData.length; i++) {
var option = $('<option value="' + currData[i] + '">' + currData[i] + '</option>');
$("#s1").append(option);
}
// s1 and s2 are the same when the page loads.
$('#s2').html($('#s1').html());
$('#s1').change(function () {
var idx = currData.indexOf($(this).val());
var newSelectData = otherData[idx]; // change s2 due to s1's selection
$('#s2').children().remove(); // clear the s2 select box
for (var i = 0; i < newSelectData.length; i++) {
var option = $('<option value="' + newSelectData[i] + '">' + newSelectData[i] + '</option>');
$("#s2").append(option);
}
});