返回RedirectToAction vs return Action

时间:2017-02-21 16:00:09

标签: c# asp.net-mvc

在我的Web应用程序中,有一个名为的操作,根据值,返回另一个操作或执行当前操作:

public async Task<ActionResult> MyAction(int id)
{
    bool someValue = AnyClass.GetSomeValue(); // doesn't matter what value: it's a boolean

    if (someValue)
    {
        // should I:
        return RedirectToAction("MyOtherAction", new {id = id});
        // or should I:
        return await MyOtherAction(id);
    }
    // do something here
    return View();
}

public async Task<ActionResult> MyOtherAction(int id)
{
    // do something else here
    return View();
}

我应该在

的第一个动作中工作

RedirectToAction("MyOtherAction", new {id = id});

或更好

return await MyOtherAction(id);

切换到其他动作?最后,他们俩都不会这样做吗?

1 个答案:

答案 0 :(得分:4)

两者之间的差异是用户最终会在浏览器的地址栏中看到的内容。

使用return RedirectToAction("MyOtherAction", new {id = id});生成HTTP重定向,这意味着如果其他操作具有路由/my-other-action,则用户最终会在其地址栏中看到它,并且它将成为浏览器中的新条目历史。

如果另一方面你执行return await MyOtherAction(id);,那么MyOtherAction的结果将呈现为用户访问的当前网址的结果(例如/my-action)。

这些方法中的任何一种都是有效的,因此您需要确定您希望网站用户拥有哪些体验。