2012-03-02 72 views
2

可能重複:
Passing a collection of objects to MVC controller using $.postMVC 3如何將自定義JS對象傳遞給控制器​​?

我有一個類:

public class MyClass 
{ 
    public int BookID { get; set; } 

    public List<SelectedBookFormat> SelectedFormats { get; set; } 

    public SelectedBasketBook() 
    { 
     SelectedFormats = new List<SelectedBookFormat>(); 
    } 
} 

public class SelectedBookFormat 
{ 
    public int ID { get; set; } 
    public int Quantity { get; set; } 
    public double Price { get; set; } 
} 

和動作:

public JsonResult Add(MyClass model) 
{ 
... 
} 

我想從客戶端生成的類柱:

(I生成類對象,然後我使用JSON.stringify()方法)

model {"BookID":"1","SelectedFormats":[{"ID":"4","Quantity":"34","Price":"44"},{"ID":"1","Quantity":"1","Price":"11"}]} 

JS:

$.post('/Add', { 
       model : JSON.stringify({ BookID: '@Model.BookID', 
             SelectedFormats : formatsTab }) }, 
     function(res){} 
       }); 

但傳遞的對象在服務器端爲空,爲什麼?

回答

3
var data = {}; 
data.BookId = 4; 

var format = { }; 
format.ID = 3; 
format.Quantity = 4; 
format.Price = 2.2; 

data.SelectedFormats = []; 
data.SelectedFormats.push(format); 

return $.ajax({ 
    type: 'POST', 
    url: 'YourController/YourAction', 
    dataType: 'json', 
    traditional: true, 
    data: { 
     model: data 
    } 
}); 

對我的救命恩人一直traditional: true

Ps。在服務器端似乎沒有必要屬性,所以你可以將它們改爲字段,因此用小寫字母書寫。然後它會匹配JS的寫作風格,並且在服務器端仍然有效。這當然是品味的問題。

+0

嗯''BookID'正確傳遞,但該列表有0項的數量。如果我將'MyClass'從List 更改爲'SelectedBookFormat []',它將爲null – Tony 2012-03-02 09:28:12

相關問題