2011-07-06 8 views
2

少し助けが必要です。私はRazorでMVC 3の小さなプロジェクトを作ろうとしています。ボタン2つのページ:ボタン1とボタン2ボタン1をクリックすると、ページ1に行きたいと思います。ボタン2と同じです(ページ2へ)。難しいことではありませんが、リダイレクトをViewではなくControllerで実行したいと考えています(cshtml)。私はActionNameとRedirectToActionを使用する必要があることを知っていますが、私はその方法を知らない。私を助けてください! 1ページのためのあなたのコントローラのアクションでMVC 3のコントローラで、面倒をするとリダイレクト

答えて

1

が、その後、コントローラアクションのHttpPost部に押されたボタンのチェックです。また

@Html.BeginForm("Process", "Page1", FormMethod.Post) 
{ 
    <input type="submit" name="button" value="Submit" /> 
} 

、あなたはActionLinkを使用することができますそれに応じてリダイレクトします。

非常に基本的な例として、あなたがあなたのフォームに2つの

<input type="submit" name="submit" value="<val>"> 

コントロールを追加することができますがHttpPostアクションに提出すると呼ばれる文字列パラメータを追加し、それぞれ同じ名前と異なる値を持つ(代わりに)表示します。値「ボタン1」と「button2を」はその後、あなたのアクションのコードで使用することができているボタンを仮定:

if(submit == "button1") { 
    RedirectToAction("Page1"); 
} else { 
    RedirectToAction("Page2"); 
} 

をどのボタンに基づいてリダイレクトするように

0

、あなたはRedirectToActionを使用することができます。

public ActionResult Process() 
{ 
    // do processing 

    // redirect to page 2 
    return this.RedirectToAction("Index", "Page2"); 
} 

あなたはプロセスのアクションがある場合に応じて、GETまたはPOSTリクエストのいずれかを使用して1ページのボタンからプロセスのアクションを呼び出すことができます偶数。例えばあなたのページ1つのビュー:あなたがする必要がありますどのような

@Html.ActionLink("Redirect to Page 2", "Process", "Page1") 
0

を押された。これは簡単な例ですが、私はあなたを考えます私の意味が分かります。ボタンに名前を付けてformcollectionをチェックするだけで、コレクションに存在するものを確認し、クリックしたものを示すだけです。以下のコードを参照してください。

@using (Html.BeginForm("Test", "Home", FormMethod.Post)) 
    { 

     <input type="submit" value="Go 1" name="go-1" /> 
     <input type="submit" value="Go 2" name="go-2" /> 
    } 

そして今のAction実装。

[HttpPost] 
    public ActionResult Test(FormCollection collection) 
    { 
     if (collection.AllKeys.Contains("go-1")) return View("Page1"); 
     if (collection.AllKeys.Contains("go-2")) return View("Page2"); 
     return View("Index"); 
    } 

とthatsです。

関連する問題