1

Javascript/AJAX を使用して、View から Controller にクラス全体を渡す方法を見つけようとしています。

次の Ajax コードを使用して ID のみを渡すことができることはわかっていますが、モデル全体を渡すことはできますか?

    @model  User
    $.ajax(
        {
            type: "POST",
            url: "\User\",
            data: @model.id,
            success:
                reloadPage()
        });

検索中に次の解決策を見ました: 「C#」オブジェクトを AJAX 経由でコントローラーに渡す方法はありますか?

代わりにこれを行うことはできますか?:

    @model  User
    $.ajax(
        {
            type: "POST",
            url: "\User\",
            data: @model,
            success:
                reloadPage()
        });

これはうまくいきますか?安全性は?最善の方法は何ですか?

4

4 に答える 4

4

JavascriptSerializer.Serialize()メソッドを確認してください。だから、このようなもの:

@model  User
$.ajax({
    type: "POST",
    url: "\User\",
    data: JSON.parse(@(new JavascriptSerializer().Serialize(Model))),
    success: reloadPage
});

基本的に、これはモデルを JSON 文字列にシリアライズし、クライアント側で解析して JS オブジェクトに戻し、AJAX リクエストに渡します。リクエストがサーバーに到達すると、MVC モデル バインディングは、JSON オブジェクトに基づいてモデルのインスタンスの構築を処理します。

JSON.parse は古いバージョンの IE ではサポートされていないことに注意してください。json2.jsを取得して、IE のメソッドをシムすることができます。

于 2012-04-06T02:20:59.380 に答える
2

ベスト プラクティスではありませんが、このデータを取得する方法が他にない場合は、tempdata を介してデータを渡すことができます。

意見:

@{
 TempData["myModel"] = Model;
}

コントローラ:

var myModel = TempData["myModel"];
TempData.Remove("myModel");
于 2012-04-06T01:42:46.107 に答える
2

元のオブジェクトと同じプロパティを持つ Json オブジェクトを作成し、Json オブジェクト名をコントローラーのパラメーター名として指定します。AJAX リクエストを使用して Json オブジェクトをコントローラーに渡す

MVC モデル バインディングが残りの処理を行います

于 2012-04-06T01:44:47.990 に答える
1

シリアライズ(jQuery)を使用してみてください

例えば。

$.ajax({
   type: "POST",
   url: "\User\",
   data: $(form).serialize(),
   success: reloadPage()
});
于 2014-05-15T23:44:16.663 に答える