gpt4 book ai didi

jquery - MVC 中的空值多选级联下拉列表

转载 作者:行者123 更新时间:2023-12-01 04:02:40 25 4
gpt4 key购买 nike

在 MVC 中,我有一个多选下拉列表。在更改事件中,我正在填充另一个下拉列表,但无法在 Controller 上获取多选值,下面是我的代码。

查看

@Html.DropDownList("Country", ViewData["country"] as List<SelectListItem>, new {@multiple="multiple", style = "width:250px", @class = "dropdown1" })

Ajax 调用

<script type="text/javascript">
$(document).ready(function () {

$("#Country").change(function () {

var abc = $("#Country").val();
alert(abc);


$("#State").empty();
$.ajax({
type: 'POST',
url: '@Url.Action("GetStates")', // we are calling json method
dataType: 'json',
//data: { id: $("#Country").val() },
data: { "CountryId": abc },
cache: false,
success: function (states) {
// states contains the JSON formatted list
// of states passed from the controller
$.each(states, function (i, state) {

alert(state.Value);
$("#State").append('<option value="' + state.Value + '">' + state.Text + '</option>');
}); // here we are adding option for States
},
error: function (ex) {
alert('Failed to retrieve states.' + ex);
}
});
return false;
})
});

Controller

public JsonResult GetStates(string CountryId)
{
return null;
}

但是对于多选下拉列表,我将 CountryId 设为 NULL,仅对于正常下拉列表,我才获取该值。

有解决办法吗?

最佳答案

您生成了 <select multiple="multiple">它回发一组值,而不是单个值。

因为您在请求中发送了数组,所以需要添加traditional: true ajax 选项

$.ajax({               
type: 'POST',
url: '@Url.Action("GetStates")',
dataType: 'json',
data: { countryId: $("#Country").val() },
traditional: true,
....

然后更改 Controller 方法以接受数组

public JsonResult GetStates(string[] CountryId) // or IEnumerable<string> CountryId

请注意,这是有效的,因为如果是一个简单的数组,但在您可能回发复杂对象数组的情况下,则需要使用 contentType: 'application/json; charset=utf-8'选项并使用 JSON.stringify({ someProperty: yourComplexArray }); 对数据进行字符串化

旁注;创建<select multiple>的正确方法是使用@Html.ListBoxFor()方法,添加 multiple="multiple" attribute. In this case, it will work, but in other cases, for example, using DropDownListFor() in a loop to create a `,将无法正确绑定(bind),所以我建议您使用正确的方法。

关于jquery - MVC 中的空值多选级联下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com