2009-03-18 20 views
3

JScriptのgetJSONメソッドを介して渡されたパラメータを受け入れるためにJsonResultを返すコントローラメソッドを取得する際に問題が発生しました。ASP.Net MVC Json結果:コントローラメソッドの問題に渡されるパラメータ

getJSONメソッド呼び出しの2番目のパラメータ( "data")がnullの場合、私が作業しているコードはうまく動作します。しかし、そこに値を渡そうとすると、コントローラメソッドが呼び出されないように見えます。

この例の場合、整数を使用したいだけです。このような細かなルックスを働くgetJSONコール:

$.getJSON(”/News/ListNewsJson/”, null, ListNews_OnReturn); 

コントローラメソッドは、このようなものです:私はこの方法をするときに、データ呼び出されることがわかり、ListNewsJsonメソッドにブレークポイントを置くことによって

public JsonResult ListNewsJson(int? id) 
{ 
    … 
    return Json(toReturn); 
} 

getJSONのパラメータがnullであるが、私は、このような3、たとえば、としての価値、とそれを置き換えるとき:

$.getJSON(”/News/ListNewsJson/”, 3, ListNews_OnReturn); 

...コントローラメソッド/ブレークポイントがヒットされることはありません。私が間違っていることは何か考えていますか?

また、ブラウザのアドレス( "/ News/ListNewsJson/3")を手動で使用するとコントローラのメソッドが正常に動作することにも言及する必要があります。

答えて

3

getJSONは、裸の値ではなく、キーと値のペアのセットが必要であるため、{id:3}を使用してid値を渡す必要があります。残念ながら、これは/ News/ListNewsJson /?id = 3になります。これはあなたが望むものではありません。私はちょうどルートフォームにそれを構築するためにURLに値を追加することをお勧めします。私はまた、値が実際に変数から来ていると仮定しているので、私はその形でそれを書いています。 nullになる可能性がある場合は、Urlを定式化するためにさらに複雑な処理を行う必要があります。

var id = '3'; 
$.getJSON(”/News/ListNewsJson/” + id, ListNews_OnReturn); 
+0

ありがとう!それはそれを説明する。 – Moskie

1

これは古いスレッドですが、なぜMVC Url.Action()ヘルパーを使用していないのですか?これはあなたのルートが正しいことを確認します。もちろん

$.getJSON('<%=Url.Action("ListNewsJson", "News") %>/' + id, ListNews_OnReturn); 

id値がViewDataをから来ている場合は、idプロパティに匿名型を渡すUrl.Action()ヘルパーメソッドの3番目のパラメータを使用することができ、およびMVCは、目的のURLを作成します。 。それ以外の場合は、値がjavascript関数から来ている場合はjavascriptで連結します。

HTH

関連する問題