2011-07-06 22 views
2

我需要一點幫助。我正在嘗試使用Razor在MVC 3中創建一個小項目。一個帶有2個按鈕的頁面:按鈕1和按鈕2.當我點擊按鈕1時,我想要進入第1頁。與按鈕2(至頁面2)相同。這並不困難,但我希望重定向在Controller中完成,而不是在View(cshtml)中完成。我知道我需要使用ActionName和RedirectToAction,但我不知道如何。請幫幫我!使用Razor在MVC 3控制器中重定向

回答

1

你需要什麼做的是哪個按鈕被按下的控制器行動HttpPost一部分,那麼檢查相應地重定向。

作爲一個非常簡單的例子,你可以添加兩個

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

控制到您的形式查看每個都具有相同的名稱和不同的值(代替),然後添加一個名爲提交HttpPost操作的字符串參數。假設按鈕有值「按鈕1」和「BUTTON2」然後在動作的代碼,你可以使用:

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

重定向基於被按下

0

在第1頁您的控制器動作,您可以用RedirectToAction

public ActionResult Process() 
{ 
    // do processing 

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

您可以使用GET或POST請求調用從1按鈕的處理動作,取決於如果過程動作冪等。例如,你的頁面1點看法:

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

或者,你可以使用一個ActionLink

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

按鈕,這是一個簡單的例子,但我想你會得到我的意思。你只需要命名你的按鈕並檢查表單集合來查看哪些存在於集合中,從而指示哪個單擊。見下面的代碼:

@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"); 
    } 

這就是它。

相關問題