2011-08-10 4 views
0

を発生in this question.アクションは、コントローラー例外で発見されていないのはなぜ

」のような状況があります... 私はこのコードを持っている:

return RedirectToAction("Save", "RequestFinishedDocument", 
           new {requestId = requestFinished.Request_ID, requestFinishedId = requestFinished.ID}); 

そして、私が持っている私のコントローラで:

public class RequestFinishedDocumentController : Controller 
{ 
    [HttpPost] 
    public JsonResult Save(int requestId, int requestFinishedId) 
    { 
     //todo 
    } 
} 

RedirectToAction呼び出しで、例外メッセージが表示されます。パブリックアクションメソッド 'Save'がコントローラ 'SuiP.Controllers.RequestFinishedDocumentControllerで見つかりませんでした'

どういうところが間違っていますか?

おかげで...」

のasp.net MVCは例外をスローする理由は、 『アクションが見つからない....』アクションは、ページが見つからない示し、すべてのルートをキャッチする代わりに、ルーティングのHttpPost属性を持っている場合。ポストアクションに

+1

私は参照された質問を見ました。あなたのケースで現在の答えはどう違うのですか? RedirectToActionはgetなので、SaveのHttpPost属性のアクションは見ることができません。 –

答えて

2

あなたのリダイレクト、私はgetアクションメソッドから推測する。

あなたはgetメソッドにリダイレクトされているように見えpostメソッド

+0

いいえ、私はしません。ページパスのURLはAjax投稿に使用されています。 Googleのロボットが来て、それを見つけてそれにナビゲートしようとする。 –

+1

@Jenea:ページにリンクを残す場合は、HTTP GETを処理する方法が必要です。 (1)そのままにしてエラーを記録し続けること、(2)JavaScriptなしのユーザーがリンクを訪問した場合を処理する[HttpPost]に加えて[HttpGet]を提供すること、(3)削除することページからのリンク(JavaScript経由で追加してください) –

2

にリダイレクトすることはできません。

コントローラーには[保存]アクションのポスト方法がありますが、[取得]はありません。

+0

いいえ、私はしません。ページパスのURLはAjax投稿に使用されています。 Googleのロボットが来て、それを見つけてそれにナビゲートしようとする。 –

+1

このコードでわかるように、RedirectToActionはgetメソッドにリダイレクトします。たとえば、コントローラにhttpGet Saveメソッドを定義していないので、httpGet Saveメソッドにリダイレクトしようとしています。エラー。 – Yag

関連する問題