返回原始视图

时间:2013-06-08 23:16:52

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

假设我在控制器中有一个POST动作,它将记录保存到数据库并返回视图。我做了类似的事情:

[HTTP POST]   
public ActionView Save()
{
  //....do stuff  
  return View(); //This will return back to /ControllerName/Index 

  //or I can do something like this:     
  return View("ViewName") //this will return to /ControllerName/ViewName
}   

但是,假设我从多个视图调用Save方法。返回到调用动作的视图的最佳方法是什么?我应该在查询字符串中存储View名称吗?或在一个视图袋?也许有更好的方法?

2 个答案:

答案 0 :(得分:2)

如果我正确理解你,你想分享这个动作,并从许多不同的来源调用它?

由于这是一个帖子操作,您可以在帖子集合中发送视图的名称作为帖子请求的一部分。

    [HTTP POST]   
    public ActionView Save(string viewName)
    {
      return View(viewName);
    } 

答案 1 :(得分:0)

我会使用不同的操作并重定向到调用网址。该模式称为post redirect get,并且经常使用。

通过这种方式,您可以获得清晰的网址并刷新浏览器仍然有效。你可能会认为这会给你一些重复的代码。将代码保存在ViewModel和Service中,一切都应该没问题。

像这样的东西:

[HTTP POST]   
    public ActionView SaveCustomer(string viewName)
    {

      return RedirectToAction("DisplayCustomer")
    } 

[HTTP POST]   
    public ActionView SaveProject(string viewName)
    {

      return RedirectToAction("DisplayProject")
    }