2012-06-30 2 views
2

이 내 자바 스크립트 코드에서 자바 스크립트 푸시 객체 배열을 가져옵니다 :MVC3의 컨트롤러 액션

var bankOptions = {}; 
    var playerOptions = []; 
    bankOptions["BankTotalAmount"] = $("#totalBankAmountID").val(); 
    bankOptions["SinglePlayerAmount"] = $("#singlePlayerAmountID").val(); 
    while (_playerNumber != 0) { 

     if (_playerNumber == 1) { 
      var player1Option = {}; 
      player1Option["Name"] = $("#p" + _playerNumber + "Name").val(); 
      player1Option["Color"] = $("#p" + _playerNumber + "Color").val(); 

      playerOptions.push(player1Option); 
     } 

     if (_playerNumber == 2) { 
      var player2Option = {}; 
      player2Option["Name"] = $("#p" + _playerNumber + "Name").val(); 
      player2Option["Color"] = $("#p" + _playerNumber + "Color").val(); 

      playerOptions.push(player2Option); 
     } 

     if (_playerNumber == 3) { 
      var player3Option = {}; 
      player3Option["Name"] = $("#p" + _playerNumber + "Name").val(); 
      player3Option["Color"] = $("#p" + _playerNumber + "Color").val(); 

      playerOptions.push(player3Option); 
     } 

     if (_playerNumber == 4) { 
      var player4Option = {}; 
      player4Option["Name"] = $("#p" + _playerNumber + "Name").val(); 
      player4Option["Color"] = $("#p" + _playerNumber + "Color").val(); 

      playerOptions.push(player4Option); 
     } 

     _playerNumber--; 
    } 
    alert(playerOptions); 
    $.ajax({ 
     url: "/StartOption/setOptions/", 
     contentType: 'application/json', 
     data: JSON.stringify({ bankOptions: bankOptions, playerOptions: playerOptions }), 
     type: "POST", 
     timeout: 10000, 
     success: function (result) { 

     } 
    }); 

을 그리고 난이 Controller 클래스를 가지고

public class StartOptionController : Controller 
    { 
     private MonopolyDB db = new MonopolyDB(); 

     // 
     // GET: /StartOption/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult setOptions(BankOptions bankOptions, Playeroptions[] playerOptions) 
     { 
      //int length = (int)playerOptions.GetType().InvokeMember("length", BindingFlags.GetProperty, null, playerOptions, null); 
      BankAccount bankaccount = new BankAccount(); 
      bankaccount.ID = 1; 
      bankaccount.TotalAmmount = bankOptions.BankTotalAmount; 
      db.BankAccount_Table.Add(bankaccount); 
      db.SaveChanges(); 

      //Here i want to get each (player1Option, player2Option...) object array from that playerOptions object array 


      //return RedirectToAction("Index"); 

      return View(); 
     } 

    } 
    public class BankOptions 
    { 
     public int BankTotalAmount { get; set; } 
     public int SinglePlayerAmount { get; set; } 
    } 
    public class Playeroptions 
    { 
     public string Name { get; set; } 
     public string Color { get; set; } 
    } 

내 문제는 내가 그 개체의 배열을 얻을 수있는 방법이다 내 setOptions 액션에서 playerOptions 객체 배열을 밀어 넣을까요?

마찬가지로 나는 내 javascript 코드에서 각 플레이어 정보를 push하는 playerOptions 개체 배열에서 내 DB에있는 각 플레이어 정보를 저장하려고합니다.

답변

3

나는 그게 쉽게 그것을 만들려고하고 있어요

public ActionResult setOptions(BankOptions bankOptions, List<PlayerOptions> playerOptions) 

으로

public ActionResult setOptions(BankOptions bankOptions, Playeroptions[] playerOptions) 

에서 액션의 부호를 변경 추천하고 싶습니다 쉽게 그것을 만들기 위해 잘 첫번째 배열의 각 요소를 처리하고 프레임 워크가이 객체를 직렬화하는 데 문제가 없습니다.

이제 당신이 내 추천을 따라 액션의 부호를 변경하는 경우 그럼에도 불구하고이

[HttpPost] 
    public ActionResult setOptions(BankOptions bankOptions, List<PlayerOptions> playerOptions) 
    { 
     //int length = (int)playerOptions.GetType().InvokeMember("length", BindingFlags.GetProperty, null, playerOptions, null); 
     BankAccount bankaccount = new BankAccount(); 
     bankaccount.ID = 1; 
     bankaccount.TotalAmmount = bankOptions.BankTotalAmount; 
     db.BankAccount_Table.Add(bankaccount); 
     db.SaveChanges(); 

     //Here i want to get each (player1Option, player2Option...) object array from that playerOptions object array 
     foreach(var item in playerOptions){ 
      item //<--- in this variable you have the element PlayerOption 
     } 

     //return RedirectToAction("Index"); 

     return View(); 
    } 
+0

I과 같은 코드를 반복 할 수있는이

[HttpPost] public ActionResult setOptions(BankOptions bankOptions, Playeroptions[] playerOptions) { //int length = (int)playerOptions.GetType().InvokeMember("length", BindingFlags.GetProperty, null, playerOptions, null); BankAccount bankaccount = new BankAccount(); bankaccount.ID = 1; bankaccount.TotalAmmount = bankOptions.BankTotalAmount; db.BankAccount_Table.Add(bankaccount); db.SaveChanges(); //Here i want to get each (player1Option, player2Option...) object array from that playerOptions object array for (int i = 0 ; i< playerOptions.Length, i++) { playerOptions[i]; //<-- this give's the specific element } //return RedirectToAction("Index"); return View(); } 

같은 배열을 반복 할 수 귀하의 질문에 대답하기 그냥 어제 처리하고 List 옵션을 사용하는 것이 아마도 가장 쉬운 방법 일 것입니다. – Chris

+0

Yeap, 나는 몇 달 전에이 문제를 다루고있다 ... 프레임 워크의 위대한 점은 아무것도하지 않고 직렬화의 핸들이다. – Jorge

관련 문제