2009-07-01 93 views
1

我有一个表单,当用户提交表单时,我想引导用户显示提交结果的新视图(传输viewmode数据以显示视图)。无法通过RedirectToAction将视图模型传递给新动作

public class HomeController : Controller 
    { 
     private MyViewModel _vm; 
     ..... 

     // POST: /Home/Create   
     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create(MyViewModel vm){ 
      //..... 
      //set up vm to temp data _vm 
      _vm = vm; 

      return RedirectToAction("DisplayData"); 
     } 
     // GET: /Home/DisplayData 
     public ActionResult DisplayData() 
     { 
      //get temp data for display 
      return View(_vm); 
     } 
} 

当我发布表单时,我可以创建vm并将其放置到临时数据位置_vm。但是,此_vm可以发送到另一个操作DisplayData,它在操作DisplayData()中为null。似乎即使在同一个控制器中重定向动作,_vm虽然是Controller var,但不是action method var。

如何解决此问题?

回答

3

它创建控制器的新实例,因为它是一个新请求,因此您已经发现它将为空。 你可以使用TempData的存储VM,TempData的持续数据1个请求

很好的解释here

0

的一个好方法是调用

return DisplayData(_vm) 

代替

RedirectToAction("DisplayData") 

无论如何,DisplayData应该接受一个模型。

+0

但你失去了邮政,重定向,获取模式 – redsquare 2009-07-01 13:47:30

相关问题