2013-12-11 34 views
0

我有一個控件,它發出一個JSON數組,我需要將它轉換爲控制器上的Model上的列表,並試圖找到一個通用的,可擴展的方法。我假設有一些簡單而明顯的東西。發送一個Json數組在輸入標準輸入

所以我得到一個數組是這樣的:

{ 
    { AddressId: 1, HouseNumber: 1, Street: "Any Street" }, 
    { AddressId: 2, HouseNumber: 2, Street: "Any Street" }, 
    { AddressId: 3, HouseNumber: 5, Street: "Any Street" }, 
    { AddressId: 4, HouseNumber: 10, Street: "Any Street" }, 
    { AddressId: 5, HouseNumber: 1536, Street: "Any Street" } 
} 

的型號:

public class AddressListModel { 
    public string AnotherFormInput { get; set; } 
    ... 
    // A selection of other form input values that are on the page. 
    ... 
    public IList<AddressViewModel> Addresses { get; set; } 
} 

public class AddressViewModel { 
    public int AddressId { get; set; } 
    public int HouseNumber { get; set; } 
    public int Street { get; set; } 
} 

所以現在的問題是,如果我已經有這種形式有很多的形式參數,我想然後把這個JSON數組,我通過JavaScript之前的表單發佈收集,我怎麼能認爲追加該數組作爲一個標準的形式參數。

這不是通過Ajax完成的,只是一個標準的表單文章。

+1

在*「我得到一個這樣的數組」的項目*不是一個數組 - 它是一個對象(在那裏是一個畸形的對象)。 –

+0

如果您不想將其作爲表單文章的一部分來完成,並且您不想完整回發,那麼您將需要使用ajax。 – Maess

+0

@AndrewWhitaker你明白了,對於術語錯誤非常抱歉。 – Martin

回答

0

我實際上最終做的是捕捉表單上的提交,然後將輸入字段插入到表單中,以使它們成爲標準參數。

這不是一個優雅的方式,但它的工作原理。

0

使用JSON.stringify()將您的對象轉換爲字符串,然後將其插入到表單的隱藏輸入參數中。在主流瀏覽器中支持;見this,或者包括json2.js

您顯然需要在服務器端使用JSON解析器;例如請查看json.org的Java部分。

+0

問題是如何在服務器端無縫完成它。我可以在一個參數中得到它,但是我需要將列表無縫地反序列化到List對象中。 – Martin

+0

如上所述,您需要一個JSON解析器。查看[json.org](http://json.org)上的Java部分 – manuelz

+0

我很熟悉如何反序列化JSON,問題是如何在MVC中使該泛型 – Martin