2011-07-06 21 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"); 
    } 

这就是它。

相关问题