ASP.. NET下拉列表选项取决于其他下拉列表中选择的选项

ASP.NET dropdown list options depends on chosen option in other dropdown list

本文关键字:选项 下拉列表 选择 取决于 NET ASP 其他      更新时间:2023-09-26

我有一个简单的ViewModel,我在我的应用程序中传递给视图,它有两个选择列表,有几个选项,例如:

public class MyViewModel {
public SelectList Names { get; set;}   // e.g options - N1,N2,N3
public SelectList Years { get; set;}  // e.g options -  Y1,Y2,Y3

}

为每个选择列表定义了几个选项。在我看来,我有两个DropDownListFor,用户可以很容易地选择选项-它是独立的。

但是我想做的是,当用户在第一个下拉列表中选择N1时,那么在第二个下拉列表中将只有选项Y2,Y3可用。当用户选择N2时,第二个将只出现N3等

也许用jQuery的东西?如何获取特定下拉列表中当前选择的选项的信息?使用JavaScript ?

是的,这在javascript中是可能的。

首先,你需要使用javascript或Jquery从下拉列表中获得选中的选项,例如:

yourSelect。(yourSelect选项。selectedIndex] value

则必须使用javascript或jquery设置禁用属性。

这篇文章的答案可能会有所帮助。

进一步看这个例子

如果你想完全删除它们,那么你需要通过使用JQuery删除节点来删除它们。

我用jQuery解决了我的问题,如果有人需要它:

  @Html.DropDownListFor(model => model.Name, Model.Names, "Wybierz rodzaj", new { @class = "form-control", onchange="setRateOptionsByDepositType(this.value)"})

. js文件:

function setRateOptionsByDepositType(type) {
    if (type === "Lokata standardowa") {
        $('#rate').prop('selectedIndex', 0);
        $('option[value="0,60"]').hide();
        $('option[value="1,70"]').show();
        $('option[value="2,00"]').show();
        $('option[value="2,20"]').show();
        $('option[value="2,70"]').show();
    }
    else if (type === "Rachunek oszczędnościowy") {
        $('#rate').prop('selectedIndex', 0);
        $('option[value="0,60"]').show();
        $('option[value="1,70"]').hide();
        $('option[value="2,00"]').hide();
        $('option[value="2,20"]').hide();
        $('option[value="2,70"]').hide();
    }
}

其中rate为本页其他下拉列表的id