2011-10-26 162 views
2

ajax呼び出しでコントローラにモデルを渡そうとしています。ASP.NET MVC AJAXでコントローラにモデルを渡す

次の質問でLaviakから提供された回答を見ましたが、動作させることができませんでした。

Possible Answer

AJAX呼び出しが実行されるとき、私は、モデル変数を未定義のエラーを取得しています。ヘルパークラスが呼び出され、文字列を返すことを確認しました。それはAJAX呼び出しが.jsファイルの中にあるからですか?なぜそれは未定義ですか?

マイコード:

Site.Master:

<script type="test/javascript"> 
    var MODEL = '<%= Model.ToJson() %>'; 
</script> 

ヘルパークラス:

public static string ToJson(this Object obj) 
    { 
     string model = new JavaScriptSerializer().Serialize(obj); 
     return model; 
    } 

のJavascriptファイル:

var GstTotal = $.ajax(
{ 
    type: 'POST', 
    async: false, 
    url: BASE_APP_URL + 'WashTicket/GetTaxTotal', 
    traditional: true, //This setting is required to pass arrays to the Controller 
    //  data: MODEL 
    data: { 
     aModel: MODEL 
    } 
}).responseText; 

対処方法:

 public string GetTaxTotal(string aModel) 
    { 

     return ""; 
    } 

答えて

3

AJAX呼び出しを含むれるjavascriptファイルは、あなたのマスターファイルにMODEL変数を定義するスクリプトの後に含まれていることを確認してください:

<script type="test/javascript"> 
    var MODEL = '<%= Model.ToJson() %>'; 
</script> 
<script type="text/javascript" src="<%= Url.Content("~/scripts/myscript.js") %>"></script> 

また、私はあなたが見てみる推薦following article JSON AJAXリクエストを使用して複雑なオブジェクトグラフをコントローラに渡す方法を示しています。

関連する問題