2009-07-01 96 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

相關問題