2016-10-19 12 views
0

現在のフルページリクエストシステムではなく純粋にAJAXページリクエストを使用して、WebアプリケーションをASP.Net MVCに移動するプロセスを進めています。ASP.NET MVC ChildActionOnlyリダイレクト

私が知りたいことは、ユーザーがアドレスバーを使用してナビゲートすると、ChildActionOnly属性のマークされたリクエストをホームページに自動的にリダイレクトできるかどうかです。

ページをURL経由で直接ナビゲートすることはできないため、すべてのURLをホームページにリダイレクトする必要があります。

私は、デフォルトのルート設定を削除すると手動でのユーザーの操作が妨げられるかどうかは考えていましたが、これが何かを壊すかどうかはわかりません。

+0

何か試しましたか? –

答えて

0

IIRC、URLからChildActionOnlyアクションをヒットしようとすると、例外をスローではなく、404、私は間違っている可能性が、それはどちらの方法でも404

かもしれない、との質問のトンが(ありますあなたがホームページにリダイレクトするのに使うことができる404およびグローバル例外を処理する方法については、Stack Overflowに関する記事を参照してください。

しかし、注意してください。リクエストがajax経由で行われる場合は、ホームページにリダイレクトするように注意してください。あなたのホームページが、部分的にロードされるはずの要素の中にネストされたものよりも悪いことはありません。 MVCプロジェクトで最後に作業したとき、私はそれぞれのアクションにタグを付けましたか、それともajaxアクションではないので、 "ajax"エラーページを返すことができました。

0

アクションがChildActionOnlyとマークされている場合、そのアクションは直接アクセスのためにルートテーブルから削除されます。したがって、ルーティングフレームワークには、プロジェクト内の何にもルーティングされないランダムなURLとして表示され、404が表示されます。代わりにリダイレクトする場合は、実際にChildActionOnlyを削除して内部で分岐する必要があります子アクションの文脈で呼び出されたかどうかに基づいたアクション。

if (ControllerContext.IsChildAction) 
{ 
    // do normal stuff 
} 
else 
{ 
    return Redirect("/my/redirect/"); 
} 

つまり、ルーティングフレームワークに通常のアクションとして公開し、直接呼び出された場合はリダイレクトします。

関連する問題