【发布时间】:2017-08-01 06:25:11
【问题描述】:
有人能指出我在这里做错了什么吗?我已经按照标准方法使用带有 $.ajax 请求的 jQuery 从视图中调用 MVC 控制器。我还将模型的名称与参数相匹配。 这是我的控制器,它在调用 ajax 调用但在参数中获取空值时被击中:
[HttpPost, Route("GetUserSettingsTable")]
public ActionResult GetUserSettingsTable(List<UserSettingsTable> userSettings)
{
return PartialView("_UserSettingsTable.cshtml", userSettings);
}
这是我正在使用的脚本文件:
var selectedUser = $('#Employees_SelectedValue').val();
var selectedCountries = $('#Countries_SelectedValue').val();
var selectedSourceSystems = $('#SourceSystems_SelectedValue').val();
var userSettings = [];
for (var i = 0, max = Math.max(selectedCountries.length, selectedSourceSystems.length); i < max; i++)
{
userSettings.push({
UserName: selectedUser,
UserCountry: selectedCountries[i] || "",
UserSourceSystem: selectedSourceSystems[i] || ""
});
};
//Here userSettings has values like: [{"121", "AU", "ABC"}, {"121", "IN", "PQR"}, {"121", "NZ", "XYZ"}]
$.ajax({
url: '@Url.Action("GetUserSettingsTable", "Admin")',
type: "POST",
data: JSON.stringify(userSettings),
success : function (result)
{
$('#userSettingsTable').html(result);
},
error: function (result)
{
alert(result);
}
});
我的模型定义如下:
public class UserSettingsTable
{
public string UserName { get; set; }
public string UserCountry { get; set; }
public string UserSourceSystem { get; set; }
}
我无法找到不匹配的位置,因为当我调用控制器时,它的参数值变为 null。任何帮助表示赞赏。
【问题讨论】:
-
如果你使用
JSON.stringify(..)那么你还需要包含contentType: 'application/json' -
我不知道为什么会这样,但是在我的测试环境类型:“POST”上,工作正常。但是在我的生产服务器上它坏了 - 类型:“POST”不起作用。我其实还是很好奇为什么。但是尝试输入:“post”,也许对你有用。
标签: javascript jquery json ajax asp.net-mvc