2013-05-07 93 views
0

我在我的Razor視圖中有一個javascript數組,我使用$ .ajax從我的MVC視圖調用了控制器的GET動作。控制器操作的參數類型應該接受從視圖傳遞來的Javascript數組。 我試圖保留它作爲「對象」,但它只顯示它爲「[object]」並且根本不顯示任何屬性。 任何想法如何實現這一目標?如何使用JQuery將java腳本數組傳遞給Controller操作?

+0

你應該包括一些代碼。 – MarioDS 2013-05-07 08:52:24

+0

是的,同意..但它很難僅分離出感興趣的代碼。如果任何人有即時的想法.. – Nirman 2013-05-07 08:54:59

+0

在傳遞它之前將'{object}'轉換爲'[array]'。 – Omar 2013-05-07 08:58:03

回答

3

它完全取決於您的數組中值的類型

說,如果你有一個整數數組,像這樣:

var intArray = [1,2,3,4] 

然後,在你的控制器,你就會有一個List<int>爲您的參數類型,該控制器是足夠聰明弄清楚轉換爲你。

但是,如果你想要的東西更先進的,我猜你是,如:

var customArray = [{hello: "world", foo: "bar"}] 

那麼最好建立在.NET中的自定義對象,以hellofoo爲屬性,如:

public CustomObject { 
    public string hello { get; set; } 
    public string foo { get; set; } 
} 

然後你可以使用CustomObject,或List<CustomObject>爲您的參數類型和控制器會爲你的屬性映射......像變魔術一樣。

3

只要通過它在AJAX並添加traditional: true,

var ids = [0,1,2,3]; 

$.ajax({ 
    url: '@Url.Action("SomeAction", "Home")', 
    type: 'POST', 
    traditional: true, 
    data: { array: ids }, 
    ... 

控制器

public ActionResult SomeAction(int[] array){} 

對於對象陣列

var objs = JSON.stringify(your_objects); 

$.ajax({ 
    url: '@Url.Action("SomeAction", "Home")', 
    type: 'POST', 
    data: { array: objs }, 
    ... 

控制器

public ActionResult SomeAction(List<YourObjectType> array){} 

檢查HERE

+0

謝謝,這只是爲我工作,但是,我有一個類似的事情,但現在我的Javascript數組實際上是一個鍵值對.. – Nirman 2013-05-07 09:31:17

+1

你想傳遞對象數組,對吧? – 2013-05-07 09:37:55

相關問題