вернуть 2-мерный массив для просмотра с контроллера в Asp.Net MVC 3 - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть модель, которая является: 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());
    }

Так как же это сделать наиболее эффективным способом?Как бы я воссоздал этот массив на мой взгляд?

1 Ответ

0 голосов
/ 01 марта 2012

Очень быстрое и грязное решение может быть следующим, вы можете немного подправить его тут и там;)

Я предполагаю, что у вас уже есть 225 делителей, представляющих ячейки на вашей странице, с идентификатором, например, от 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...