2012-03-28 14 views
3

我有以下代碼:通過JS數組控制器的動作

<form action="" onsubmit="getSelectedPlace(this);" target="_blank"> 
     <div class="wrap_input"> 
      <input type="submit" id="myDiv" class="btn buy_btn" value="Done"> 
     </div> 
     </form> 

function getSelectedPlace(form) { 
     var placesID = new Array(); 
     $(".place.green").each(function() { 
      placesID.push($(this).attr("id")); 
     }); 

     form.action = "/Pay/Buy?places=" + placesID; 
     return true; 
    } 

getSelectedPlace我得到ID和陣列將其推入,並填寫action。 我的行動:

public ActionResult Buy(string[] places) 
      { 
       return new EmptyResult(); 
      } 

在螢火蟲placesID被填滿。但在我的行動placesnull。如果我將string[]更改爲簡單string,那麼結果是相同的。 問題在哪裏?

謝謝。

回答

1

我的解決辦法:
添加HttpPost行動,並添加method="POST"到窗體。

+0

哦是嗎?學到了新東西! +1 – tusar 2012-03-28 11:09:24

+0

它適用於GET和POST,請參閱下面的答案。 – 2012-03-28 14:35:33

1

我建議你只使用string。用逗號或任何其他符號分隔它。

function getSelectedPlace(form) { 
    var placesID = ""; 
    $(".place.green").each(function() { 
     placesID = $(this).attr("id") + "," + placesID; 
    }); 

    form.action = "/Pay/Buy?places=" + placesID; 
    return true; 
} 

在行動,

public ActionResult Buy(string places) 
     { 
      string[] placesArray = places.Split(","); 
      return new EmptyResult(); 
     } 

而且使用onsubmit="getSelectedPlace(this);"是不是安全。使用onsubmit="return getSelectedPlace(this);"

2

請注意傳統的參數序列化。更多細節在這裏:http://api.jquery.com/jQuery.param/

<script type="text/javascript"> 

    var strArray = new Array(); 

    strArray[0] = "P1"; 
    strArray[1] = "P2"; 

    var params = { data: strArray }; 

    $.ajax({ 
     type: "GET", 
     url: "/Home/Test", 
     data: params, 
     dataType: "json", 
     traditional: true 
    }); 
</script> 
} 

控制器:

public ActionResult Test(string[] data) 
{ 
    @ViewBag.Test = data[0]; // Data will be set to P1 
    return null; 
} 
相關問題