MVC(五)根据另一个填充下拉列表
MVC (5) Populate a dropdown based on another
我知道我可以用 SelectedListItem>
和 @Html.DropDownList("someID")
以及 os 的列表制作一个下拉菜单..
我的问题是,如果您有 2 个下拉菜单,而第二个下拉菜单取决于第一个下拉菜单中的所选项目怎么办?
如何填充它?用 JS?你会怎么做?
您会用另一个列表更改填充,更改整个下拉列表,或者可能对每个下拉组合都有一个局部视图,所以这是用正确的下拉列表替换的问题。
我添加了 NetFiddle 示例。作品 here
我建议使用 jquery $.getJson()
来填充第二个下拉列表而不刷新页面。您可以像下面的例子一样实现。
//html
<select id="EventId" name="eventId">
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3</option>
</select>
<label>Second</label>
<select id="SecondDropdown">
</select>
// jquery
$("#EventId").on("change", function(){
showValue($(this).val());
})
function showValue(val)
{
console.log(val);
$.getJSON('@Url.Action("GetDropdownList", "Home")' + "?value=" + val, function (result) {
$("#SecondDropdown").html(""); // makes select null before filling process
var data = result.data;
for (var i = 0; i < data.length; i++) {
$("#SecondDropdown").append("<option>"+ data[i] +"</option>")
}
})
}
//控制器
[HttpGet]
public JsonResult GetDropdownList(int? value)
{
List<string> yourdata = new List<string>();
if(value == 2)
{
yourdata.Add("option2a");
yourdata.Add("option2b");
yourdata.Add("option2c");
return Json(new { data = yourdata}, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { data = ""}, JsonRequestBehavior.AllowGet);
}
}
我知道我可以用 SelectedListItem>
和 @Html.DropDownList("someID")
以及 os 的列表制作一个下拉菜单..
我的问题是,如果您有 2 个下拉菜单,而第二个下拉菜单取决于第一个下拉菜单中的所选项目怎么办?
如何填充它?用 JS?你会怎么做? 您会用另一个列表更改填充,更改整个下拉列表,或者可能对每个下拉组合都有一个局部视图,所以这是用正确的下拉列表替换的问题。
我添加了 NetFiddle 示例。作品 here
我建议使用 jquery $.getJson()
来填充第二个下拉列表而不刷新页面。您可以像下面的例子一样实现。
//html
<select id="EventId" name="eventId">
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3</option>
</select>
<label>Second</label>
<select id="SecondDropdown">
</select>
// jquery
$("#EventId").on("change", function(){
showValue($(this).val());
})
function showValue(val)
{
console.log(val);
$.getJSON('@Url.Action("GetDropdownList", "Home")' + "?value=" + val, function (result) {
$("#SecondDropdown").html(""); // makes select null before filling process
var data = result.data;
for (var i = 0; i < data.length; i++) {
$("#SecondDropdown").append("<option>"+ data[i] +"</option>")
}
})
}
//控制器
[HttpGet]
public JsonResult GetDropdownList(int? value)
{
List<string> yourdata = new List<string>();
if(value == 2)
{
yourdata.Add("option2a");
yourdata.Add("option2b");
yourdata.Add("option2c");
return Json(new { data = yourdata}, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { data = ""}, JsonRequestBehavior.AllowGet);
}
}