2011-01-08 3 views
2

MVC3 RC2でJSONモデルバインディングでAjaxを使用しようとしていますが、何らかの理由でコントローラのアクションメソッドにデータが到達しません。このトピックに関する記事は他にもありますが、古いバージョンのMVCを参照していますが、私が見つけた投稿はどれも現れていません。私はJSON、JSON ModelBindingに慣れていないので、jQuery Ajaxの呼び出しでよく経験したことがないので、簡単に何かを逃してしまった可能性があります。Json ModelBindingがMVC3のAjaxから機能しないRC2

私の出発点は、セクションJavascriptとAJAX改善にMVC3プレビューを導入スコット・ガスリーのポストhttp://bit.ly/btdFP5だったが、私のコードが若干異なっているので、私が代わりに、GoogleのAPIオフの地図データを引っ張っています:

 var bounds = map.getBounds(); 
     var southWest = bounds.getSouthWest(); 
     var northEast = bounds.getNorthEast(); 

     var mb = { nelat: northEast.lat(), nelng: northEast.lng(), swlat: southWest.lat(), swlng: southWest.lng() }; 

     $.ajax(
      { 
       url: "/home/GetMarkers", 
       type: "post", 
       dataType: "json", 
       data:JSON.stringify(mb), 
       contentTYpe: "application/json; charset=utf-8", 
       success: function (result) { 
       ... 

成功関数はすべて正常に動作しますので、コードリストを停止しました。

私は緯度/経度の座標のためのプロジェクトのドメインモデルでクラスを持っている:

Public Class MapBounds 
    Public Property nelat As Double 
    Public Property nelng As Double 
    Public Property swlat As Double 
    Public Property swlng As Double 
End Class 

とコントローラのアクションは次のとおりです。

Function GetMarkers(ByVal mb As MapBounds) As JsonResult 
    Dim objMarkers = ... get relevant data from database 
    Return Json(objMarkers) 
End Function 

Firebugを介して観察掲載JSONデータれます(通常):

{"nelat":51.22959997248028,"nelng":9.811035156249996, 
"swlat":42.190280664203,"swlng":-7.8110351562500036} 

ただし、返される値はMapBoundsオブジェクトのすべてです ゼロ。私は個々の値を渡すことを含むパラメータを渡すことに様々なバリエーションを試しましたが、運がありません。値はゼロまたはヌルです。

はフィル・ハークのポスト - http://bit.ly/bUl21b - アクションメソッドの引数にJSONを送信するには、JsonValueProviderFactoryは今MVC3の一部であることを言いますが、私はそれが存在したことを確認するために、とにかくチェックし(それはあります)。

答えて

2

contentTypeパラメータに誤字があり、正しく設定されない可能性があります。それはcontentTypeであり、contentTYpeではありません。

+0

そこにdohの瞬間を読んでください。ちょうどあなたの脳が見たいものを見ていることを示すために行く。ありがとう。 – CrispinH

+0

これらのタイプミスに関する質問を削除して[スタックオーバーフローをクリーンアップするキャンペーン](http://meta.stackexchange.com/q/167342)があります。あなたはこの質問に近い投票をして少し投球してもよろしいですか? –

+1

申し訳ありませんが、私はそれらをトピック外の質問とはみなさず、それらを閉じるために投票しません。 –

関連する問題