从POST操作重定向到POST操作

时间:2017-05-28 13:17:08

标签: c# asp.net .net asp.net-mvc routes

我有2个POST操作,每个操作都希望从一个操作系统重定向到另一个操作:

[HttpPost]
public IActionResult Foo()
{
    bool isBar = handleFoo();
    if (isBar) return RedirectToAction("Bar");
    else return View();
}


[HttpPost]
public IActionResult Bar()
{
    bool isFoo = handleBar();
    if (isFoo) return RedirectToAction("Foo");
    else return View();
}

假设用户提交表单并运行Bar方法,如果布尔表达式isFoo为真,则返回Foo方法及其视图,否则返回当前{ {1}}查看。

目前,我的代码无法返回正确的操作视图,我该怎么办?

3 个答案:

答案 0 :(得分:1)

请在您的情况下指定视图名称:

N.B never expose 

答案 1 :(得分:0)

RedirectToAction使用的是GEt而不是POST,所以我假设这两个动作都在同一个控制器中,所以你可以调用另一个动作来调用这样的方法

[HttpPost]
public IActionResult Foo()
{
    bool isBar = handleFoo();
    if (isBar) return Bar();
    else return View();
}


[HttpPost]
public IActionResult Bar()
{
    bool isFoo = handleBar();
    if (isFoo) return Foo();
    else return View();
}

答案 2 :(得分:0)

希望我能为您的问题找到解决方案,代码应该是这样的。

[HttpGet]
public IActionResult Foo()
{
    bool isBar = handleFoo();
    if (isBar) return RedirectToAction("Bar");
    else return View();
}


[HttpPost]
public IActionResult Bar()
{
    bool isFoo = handleBar();
    if (isFoo) return RedirectToAction("Foo");
    else return View();
}

注意:请将 foo()方法的action属性设为[HttpGet]。

因为RedirectToAction()仅支持get请求,ie就像从浏览器发出新请求一样。

对于Bar()方法,您可以将action属性保留为[httppost],因为它是从表单调用的。

希望以上信息对解决您的问题有用,请让我知道您的想法或反馈

由于

KARTHIK