2012-01-18 5 views
1

を返す - 表のセルにクリックすると、メソッドにリダイレクトされます:MVCは、私がイベントを持ってFirstView.cshtmlファイルで間違ったビュー

$.get('@Url.Action("MyMethod", "MyController")', { someParameters }); 

無効である方法MyMethodは、では、私が電話してイベントDownloadStringCompleted私が持っているもの:

Response.Redirect(Url.Action("Second", "MyController")); 

SecondはSecondViewを返すアクションメソッドです。 SecondViewは私の望むビューですが、ブラウザには表示されません。ブレークポイントがそこに入り、それを渡してブラウザにFirstViewを取得します。

何故その理由が考えられますか?彼らは同じコントローラの中にいる可能性がありますか?

このメソッドは次のようになります。 2番目の戻り値ビュー。その本体では、いくつかのViewDataパラメータを渡します。

イベント: いくつかのJSONデータを読み込み、リダイレクトを呼び出します。

奇妙なことは、ブレークポイントが正しいビューを通過することですが、私はブラウザで間違ったものを取得します。

+0

あなたのコードの擬似コードを表示できますか? – gdoron

答えて

0

Srcee、

私は、これはそれがMyMethodはアクションを襲った後、あなたのAJAX機能が「行って」されていることに起因していると信じています。リダイレクトは、ajax呼び出しのためにパイプラインの一部ではないため、起動されません(少なくともこれは私の基本的な理解です)。あなたのための代替手段は、次の線に沿って何かをするようになります:

$.ajax({ 
    url: '@Url.Action("MyMethod", "MyController")', 
    data: { id: 123 }, // i.e. someParameters 
    context: document.body, 
    success: function(){ 
    window.location = '@Url.Action("Second", "MyController")'; 
    } 
}); 

これはヘッドのもののすべてのトップであると動作しないかもしれないが、別のアプローチです。

[編集] - あなたの後の編集に基づいて、実際には、ajaxを使ってサーバー上でリダイレクトすることは不可能なので、実際にはajaxを使用しないことをお勧めします。参照:

asp.net mvc ajax post - redirecttoaction not working

とも:

How can I RedirectToAction within $.ajax callback?

この上の確認のため。

+0

しかし、リダイレクトがヒットし、2番目のメソッドがヒットします。 –

+0

i * think *それはまだそれがajax呼び出しであるという事実に関係していると思います。私は今、デベロッパーマシンにいないか、試してみるのですが、私の試行を実行して何が起こるかを見てください。私は今日も後でいくつかの点で同様にやってみよう。 –

+0

しかし、私は.cshtmlからSecondを呼んでいない。私はコントローラからそれを呼び出します。私はAjaxからそれを呼び出すことはできません。 –

0

MyMethodでResponse.Redirect(...)を呼び出さないようにしてください。代わりに、電話:

public ActionResult MyMethod() 
{ 
    return Redirect(Url.Action("Second")); 
} 

コントローラ名が現在のものと同じ場合は、明示的に含める必要はありません。

私はちょうど私の開発者ボックスでテストを行いましたが、これは正しく動作しています(問題が正しくモデル化されていると仮定して)。

+0

私は試して、結果は同じです、私は最初のビューを取得します。 –

+0

@スレーセ - 関連ページにあなたのコードを投稿できますか?私は十分に見ていないように感じる。上のジムとのあなたの議論に基づいて、私は何かが欠けているように感じる。 – JasCav

関連する問題