在我的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);
切换到其他动作?最后,他们俩都不会这样做吗?
答案 0 :(得分:4)
两者之间的差异是用户最终会在浏览器的地址栏中看到的内容。
使用return RedirectToAction("MyOtherAction", new {id = id});
生成HTTP重定向,这意味着如果其他操作具有路由/my-other-action
,则用户最终会在其地址栏中看到它,并且它将成为浏览器中的新条目历史。
如果另一方面你执行return await MyOtherAction(id);
,那么MyOtherAction
的结果将呈现为用户访问的当前网址的结果(例如/my-action
)。
这些方法中的任何一种都是有效的,因此您需要确定您希望网站用户拥有哪些体验。