MVC3网址路由 - 使用上一个网址呈现视图(如回发)

时间:2011-12-23 15:56:09

标签: asp.net-mvc-3 c#-4.0 asp.net-mvc-routing

我有一个Controller,它有一个Create方法来处理表单中的HttpPost数据。包含表单的页面由URL

访问
CallOutcome/Call?orderId=114565

提交表单时,我会执行db insert&创建一个视图模型对象,该对象返回到视图以再次显示该窗体。这工作正常,但URL现在已更改为我的操作方法的名称:

CallOutcome/Create

如何让它显示原始网址?期望的结果就像它像回发一样工作,即重新显示相同的页面和URL。

这是我的(简化)动作方法,它将CallDetailsViewModel对象返回到名为“Call”的视图:

[HttpPost]
 public ActionResult Create(GGAP_CallOutcome callOutcome)
{
    if (ModelState.IsValid)
    {
        callRepository.SaveCallOutcome(callOutcome);
        return View("Call", new CallDetailsViewModel{
            CustomerOrder = new CustomerOrder{},
            CallOutcome = new CallOutcome{},
            Task = new Task{}
         });
     }
 }

2 个答案:

答案 0 :(得分:0)

我认为你应该看看Post-Redirect-Get模式(PRG模式)。

可在此question中找到实施详情。

恕我直言,有趣的是如何使用TempData来管理无效的ModelState。

答案 1 :(得分:0)

回复不多!离圣诞节太近了吗?

为了记录,我使用了RedirectToRoute:

return RedirectToRoute(new
{
   controller = "CallOutcome",
   action = "Call",
   orderId = Convert.ToInt32(callOutcome.OrderId)
});

这正是我想要的。