我将我的列表传递给mvc控制器,但我在控制器中获取空值.但是当我在客户端显示警报时,我的列表中有值.
ajax电话
$("#addTiles").click(function() {
userTiles = JSON.stringify({
'userTiles': userTiles
});
alert("Entered function.");
alert(userTiles[0].TileID);
var url = '@Url.Action("AddTiles")';
$.ajax({
type: "GET",url: url,data: userTiles,success: function(d) {
if (d.indexOf('"IsSessionExpired":true') != -1) {
location.reload();
} else {
onAddTilesSuccessful(d);
}
},error: function() {
errorInoperation();
},contentType: "application/html; charset=utf-8",dataType: 'html'
});
});
function onAddTilesSuccessful(e) {
$("#tilesSubmissionMsg").append(e);
}
function errorInoperation(d) {
$("#tilesSubmissionMsg").append("Something went wrong");
}
mvc控制器
public ActionResult AddTiles(List<UserTilesVM> userTiles)
{
return View();
}
列表模型
public class UserTilesVM
{
public int TileID { get; set; }
public int TopPosition { get; set; }
public int LeftPosition { get; set; }
}
在javascript中列出
"{"userTiles":[{"TileID":"3","TopPosition":0,"LeftPosition":0}]}"
我也尝试过用stringfy发送我的列表,但这也行不通.
解决方法
在AddTiles方法上使用:[HttpGet],因为你在Ajax命中使用了类型:“GET”.
[HttpGet]
public ActionResult AddTiles(List<UserTilesVM> userTiles)
{
return View();
}
如果仍然不起作用,那么尝试键入:Ajax命中的“POST”和方法使用[HttpPost]
[HttpPost]
public ActionResult AddTiles(List<UserTilesVM> userTiles)
{
return View();
}