我可以使用一些建议来根据第一个下拉列表中的选定输入创建新列表。
我想要做的是当用户选择DropDownList中的某些内容时,它应该以某种方式(不是整个页面)重新加载并生成一个新列表,该列表将显示在第二个下拉列表中。
为了更好地解释这一点,我创建了两个DropDownListFor - >出发路线和返程路线。他们拥有的数据如下所示:
出发下拉列表
<p>
@Html.Label("Departure route:")
@Html.DropDownListFor(m => m.Departureroute, Model.RoutesList, new { @class = "dropdownlist", @id = "departureroute" })
</p>
Model.RoutesList 来自以下方法:
public List<SelectListItem> Routes()
{
var routes = new List<SelectListItem>
{
new SelectListItem {Value = "OsCo", Text = "Oslo - Copenhagen"},
new SelectListItem {Value = "CoOs", Text = "Copenhagen - Oslo"},
new SelectListItem {Value = "CoSt", Text = "Copenhagen - Stockholm"},
new SelectListItem {Value = "StCo", Text = "Stockholm - Copenhagen"},
new SelectListItem {Value = "OsSt", Text = "Oslo - Stockholm"},
new SelectListItem {Value = "StOs", Text = "Stockholm - Oslo"},
};
return routes;
}
返回下拉列表
我不确定是否应该使用此方法,因为我想创建一个新列表并仅显示有效的路由。
<p>
@Html.Label("Return route:")
@Html.DropDownListFor(m => m.Returnroute, Model.RoutesListConversely, new { @class = "dropdownlist", @id = "returnroute" })
</p>
Model.RoutesListConversely来自这个数据:
public List<SelectListItem> RoutesConversely()
{
var routesconversely = new List<SelectListItem>
{
new SelectListItem {Value = "CoOs", Text = "Copenhagen - Oslo"},
new SelectListItem {Value = "OsCo", Text = "Oslo - Copenhagen"},
new SelectListItem {Value = "StCo", Text = "Stockholm - Copenhagen"},
new SelectListItem {Value = "CoSt", Text = "Copenhagen - Stockholm"},
new SelectListItem {Value = "StOs", Text = "Stockholm - Oslo"},
new SelectListItem {Value = "OsSt", Text = "Oslo - Stockholm"},
};
return routesconversely;
}
如您所见,我设置的值类似“CoOs”,代表哥本哈根到奥斯陆。当用户选择时,让我们在出发路线下拉列表中说出斯德哥尔摩 - 哥本哈根,它的值为“StCo”。
每次用户在出发路线下拉列表中选择新路线时,我都想创建一个新列表。如果出发路线是斯德哥尔摩 - 哥本哈根“StCo”,那么返回路线下拉列表应包含“哥本哈根 - 斯德哥尔摩”CoSt“和哥本哈根 - 奥斯陆”CoOs“等字段,而不是全部。
我不确定这样做的正确方法是什么,但是已经读过Ajax是我应该看的东西。 关于我如何做到这一点的任何建议?