这是我的控制器
[HttpPost]
public JsonResult UpdateCountryDropDownList(string ContinentId)
{
HotelContext H = new HotelContext();
int ContinentID = int.Parse(ContinentId);
List<Country> Co = H.Country.Where(x => x.ContinentId == ContinentID).ToList();
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });
return Json(new { ListResult = Co }, JsonRequestBehavior.AllowGet);
}
当我通过mylist
代替 Co 时,它可以正常工作
这是我的ajax电话。
$(document).ready(function () {
$("#Name").change(function () {
var ContinentoId = $(this).val();
$.ajax({
type: "Post",
dataType: "json",
data: { ContinentId: ContinentoId },
url: '@Url.Action("UpdateCountryDropDownList","Home")',
success: function (result) {
alert("worked");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("failed");
}
它在传递国家/地区对象列表时给出了失败的消息,但在传递字符串列表时成功。这里出了什么问题?
答案 0 :(得分:0)
你应该做的第一件事是检查你的呼叫失败。
而不是alert('failed')
执行类似console.log(arguments)
的操作,并查看您的浏览器开发工具(控制台)以查找实际消息。
我猜测你的错误信息会出现在没有方法存在的情况下。
您的控制器仅设置为接收单个字符串。
public JsonResult UpdateCountryDropDownList(string ContinentId)
如果您希望能够POST
字符串列表,请将控制器更改为接受List<string>
,例如(注意我更改了参数名称)
public JsonResult UpdateCountryDropDownList(List<string> ContinentIds)
然后您就可以发布一个字符串数组 - 将您的ajax调用调整为:
data: { ContinentIds: ["1","2","3"]}
虽然这个概念已经存在,但这些都没有经过测试。