2012-02-29 170 views
0

我有一個模型是:private int [,] mapTilesArray = new int [10,10]; 我想要做的就是使用$ .ajax來修改這個模型,然後從控制器 返回我的視圖。然後基於這個數組中的任何值,我想在我的視圖中構建一個類似的div數組。所以現在我不知道如何使用json格式將此模型返回到我的視圖。返回2dimentional數組,以查看從控制器在Asp.Net MVC 3

我的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

在你的控制器,你有沒有嘗試過 「回JSON(圖)」? – Dave 2012-02-29 19:32:08

+0

不,所以我會這樣做 – 2012-02-29 19:33:02

+0

但即便如此,我將如何檢查裏面的值? – 2012-02-29 19:33:37

回答

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); 
} 
相關問題