0

リクエストajaxを使用してすべてのデータをオブジェクトに取得したいと思います。

このデータは、関数を使用してコントローラーに入力されます。私のデータのヘッダーには、次の情報があります。

allPlyが作成する4つのオブジェクトがありますが、すべてのデータ(グラム、ローションなど)がnullまたはゼロに等しくなります。しかし、データコメントとOtherDataは大丈夫です、これは機能します。

ご協力いただきありがとうございます

私の要求:

var params={};
var allStep21 ={allData..}
$.extend(params,allStep21);
 $.ajax({
    type: "POST",
    url: "Request",
    data: params,
});

ヘッダーhtml:

allPly[0][Gramme]:10
allPly[0][Toto]:White
allPly[0][Test]:None
allPly[0][Lotion]:1
allPly[1][Grammage]:11
allPly[1][Toto]:White
allPly[1][Test]:Fine
allPly[1][Lotion]:0
OtherData : 585
Comment: all it's ok

私のコントローラーでは:

[HttpPost]
public ActionResult Request(AllStep21 allStep21)
{
}

私のモデルでは:

public class AllStep21
{
    public String OtherData { get; set; }
    public String Comment { get; set; }
    public List<allPly> allPly { get; set; }
}
public class allPly
{
    public int Gramme { get; set; }
    public String Toto { get; set; }
    public String Test { get; set; }
    public int Lotion { get; set; }
}
4

2 に答える 2

1

JSONリクエストを使用して、任意の複雑なオブジェクトをコントローラーアクションに送信できます。

var params = { 
    allStep21: { 
        comment: 'some comment', 
        otherData: 'some other data',
        allPly: [
            { toto: 'toto 1', test: 'test 1', lotion: 1, gramme: 1 },
            { toto: 'toto 2', test: 'test 2', lotion: 2, gramme: 2 }
        ]
    } 
};

$.ajax({
    url: 'Request',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(params),
    success: function(result) {
        alert('successs');
    }
});

ここJSON.stringifyに示されている方法は、すべての最新のブラウザーにネイティブに組み込まれています。ただし、レガシーブラウザをサポートする必要がある場合は、json2.jsスクリプトを含める必要があります。

于 2012-05-11T05:57:30.823 に答える
-1

必要なのは、独自のモデルバインダーを実装することです。これらのリンクを見てください:

http://odetocode.com/blogs/scott/archive/2009/05/05/iterating-on-an-asp-net-mvc-model-binder.aspx http://buildstarted.com/2010/09/12 / custom-model-binders-in-mvc-3-with-imodelbinder /

お役に立てば幸いです。

于 2012-05-10T21:55:13.933 に答える