Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中不使用Ajax或Submit刷新视图/局部视图_C#_Asp.net Mvc_Asp.net Mvc 4_Razor_Asp.net Mvc Viewmodel - Fatal编程技术网

C# 在MVC中不使用Ajax或Submit刷新视图/局部视图

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将需要获取所选值并更新新列表以对其进行操作 下面是一个例子:

我有一个ViewModel,其中包含不同类型的列表

第一次加载页面时,我希望根据所选下拉列表显示数据列表

当下拉列表更改时,我希望显示特定于该类型的数据列表

但是我不想转到我的控制器,因为在这种情况下,我需要执行搜索/查询,因为我首先已经在视图中拥有了所有类型

我该怎么做

任何建议


谢谢,

如果您不想转到服务器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);
    }
});