2011-07-06 8 views
0

私は、ユーザーがアカウントを切り替えることができるように、私たちのマスターページに存在するユーザーコントロールを作成することが任されています。これにより、ユーザーはアカウントページに戻る必要なく、アカウントを変更できるようになります。これは正統で完璧な仕事のようでした。MVC2を使用してコントロールからリダイレクトする方法

私はコントロールを作成し、Html.RenderActionを使用してマスターページに追加しました。最後のステップは、ユーザーをそのアカウントのホームページにリダイレクトすることです。これを行うために、私はホームページへのルートを構築し、RedirectToRoute(ルート)を返そうとします。

私はこれをしようとすると、私はこのエラーを取得:

Child actions are not allowed to perform redirect actions 

誰もがこの問題を解決する方法上の任意のアイデアを持っているか、私はあなたはボックスに事前に

おかげ

答えて

2

を自分自身をコード化しています醜いハックで不正行為をすることができます:

[ChildActionOnly] 
public ActionResult SomeUserControlAction() 
{ 
    // ... some processing 

    var url = Url.RouteUrl("routeName", new 
    { 
     action = "foo", 
     controller = "bar" 
    }); 
    Response.Redirect(url); 
    return null; 
} 

私は私にとっても恥ずかしく感じますそれを実現するが、それは機能する。

ビューモデルの一部としてURLをビューに渡し、window.location.hrefを新しいURLに設定して、javacriptでリダイレクトを実行することもできます。

+0

window.location.hrefソリューションが望ましいと思われますか?両方は少しclunky(私はあなたの提案を感謝しない:)私は完全に逃したこれにアプローチするクリーナーの方法だった? – wcm

+0

@wcm、あなたの正確なシナリオをもっとよく知らなくても、すぐに現れた2つのアプローチがあります。 –

関連する問題