2009-04-19 14 views
1

実行前にいくつかの条件をチェックする必要のある異なるコントローラにアクションがあります。条件が満たされていない場合は、次の手順(ユーザーが従わなければならないリンクが指示に含まれます)で別のページにユーザーをリダイレクトする必要があります。ASP.NET MVC - 一部のデータを渡してコントローラ/アクションにリダイレクトする

public ActionResult SendMessage() 
{ 
    // check if user has enough credit 
    if (!hasEnoughCredit(currentUser)) 
    { 
     // redirect to another page that says: 

     // "You do not have enough credit. Please go to LinkToAddCreditAction 
     // to add more credit." 
    } 

    // do the send message stuff here 
} 

私はShowRequirements(と呼ばれる単一の一般的なアクションを持つようにしたい)の要件コントローラにあります:例のSendMessage()アクションは、メッセージコントローラに位置しているために

SendMessage()アクションでは、ユーザーに表示するメッセージを設定してから、ユーザーをShowRequirements()アクションに転送したいと思います。 ShowRequirementsアクションのURLにメッセージが表示されないようにするだけです。

このデータをShowRequirements()アクションに伝達する方法はありますか?

答えて

0

さて、私は間違っていたと思います。 JohnとAndrewが述べたように、私は単にViewDataを介してデータをビューに渡す必要があります。

私は/ views/SharedにRequirementsPage.aspxを作成しました。今、私はどちらのアクションで、私はViewDataを辞書に記入し、このようなRequirementsPage.aspxに渡し:

public ActionResult SendMessage() 
{ 
    // check if user has enough credit 
    if (!hasEnoughCredit(currentUser)) 
    { 
     // redirect to another page that says: 
     ViewData["key1"] = "some message"; 
     ViewData["key2"] = "UrlToTheAction"; 
     return View("RequirementsPage"); 
    } 

    // do the send message stuff here 
} 
6

リダイレクト先の新しいアクションに渡されるTempData ["message"]に挿入することができます。

+0

これはおそらく最良の解決策ですが、あなたのビジネス・ロジックを再考することがありますように聞こえます。何らかのプロセスが発生するために、リダイレクトを介して接続された2つの分離したアクションを一緒に行う必要があるのはなぜですか?おそらく、あなたはいくつかのコードを抽象化する必要がありますか? –

+0

正しい。リダイレクトなしでエラーを表示するのに必要なビュー(ViewData/ViewModel)を返すことができます。 –

+0

Andrew、私はこれらの条件をチェックしてそれに応じて他の方法を考えることはできません。どのように同じシナリオをやっていくのですか? – xraminx

関連する問題