我的模型是:private int [,] mapTilesArray = new int [10,10]; 我想要做的是使用$ .ajax修改此模型,然后从控制器返回它 在我看来然后根据这个数组中的任何值,我想在我的视图中构造一个类似的div数组。所以现在我不知道如何使用json格式将此模型返回到我的视图。
我的Ajax请求:
var backgroundColor;
$(function () {
$(".mapTile").click(function () {
$("#info").text($(this).attr("x"));
var tile = {
X: $(this).attr("x"),
Y: $(this).attr("y")
};
$.ajax({
beforeSend: function () { ShowAjaxLoader(); },
url: "/Game/ShowTiles",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: JSON.stringify(tile),
success: function (data) { HideAjaxLoader(); },
error: function () { HideAjaxLoader(); }
});
});
控制器:
[HttpPost]
public ActionResult ShowTiles(TileModel tile)
{
MapModel map = new MapModel();
map.MapTilesArray[tile.X, tile.Y] = 1;
return this.Content(map.MapTilesArray.ToString());
}
那么如何以最有效的方式完成这项工作?如何在我的视图中重新创建此数组?
答案 0 :(得分:0)
一个真正快速而肮脏的解决方案可能如下,你可能想在这里和那里稍微调整一下;)
我假设您已经有225个div代表您网页上的单元格,其中id从例如cell_1变为cell_225。
查看:
$.ajax({
beforeSend: function () { ShowAjaxLoader(); },
url: "/Game/ShowTiles",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: JSON.stringify(tile),
success: function (data) {
$.each(data, function (index, item) {
if (item) {
var cellnumber = ((item.Y * 15) + item.X);
$("#cell_" + cellnumber).innerText = item.Value;
}
});
HideAjaxLoader();
},
error: function () {
HideAjaxLoader();
}
});
控制器/型号:
public class MapModel
{
public TileModel[,] MapTilesArray;
public MapModel()
{
MapTilesArray = new TileModel[15, 15];
}
}
public class TileModel
{
public int X;
public int Y;
public int Value { get; set; }
}
[HttpPost]
public ActionResult ShowTiles(TileModel tile)
{
MapModel map = new MapModel();
map.MapTilesArray[tile.X, tile.Y] = new TileModel { X = tile.X, Y=tile.Y, Value = 1};
return Json(map.MapTilesArray);
}