2013-04-27 66 views
1

將一些數據保存到數據庫之後,我從數據庫中提取新創建的userId,然後我需要將它發送到下一個視圖。我正在使用ReditectToAction來引導它併發送值。我已經驗證了該值正在重定向,但我無法弄清楚如何獲取它,因爲進入AccountSetup的模型爲null。我在哪裏goig錯了?如何從RedirectToAction訪問控制器方法中的參數值

方法發送的ID:

  var id = user.UserId; 

      var accountModel = new AccountViewModel 
      { 
       UserId = id 
      }; 

      return RedirectToAction("AccountSetup", "Home", accountModel.UserId); 
     } 

我在調試已經證實,該accountModel.userId公頃值。

方法承接該ID:

public ActionResult AccountSetup(AccountViewModel model) 
    { 
     int id = model.UserId; 

機型爲空。

回答

2
return RedirectToAction("AccountSetup", "Home", accountModel.UserId); 

您沒有返回操作期望的模型,而只是一個id值。模型聯編程序不能將此值綁定到AccountViewModel.UserId,它可能會將其綁定到默認路由中的id參數。您實際上期待的是AccountViewModel類型的模型,因此您應該發送AccountViewModel實例。

return RedirectToAction("AccountSetup", "Home", 
         new AccountViewModel {UserId = accountModel.UserId}); 
+0

謝謝你,偉大的工作和你的解釋是有道理的。 – BattlFrog 2013-04-27 19:44:00

0

您需要使用TempData來存儲重定向過程中的任何內容。

TempData["MyModel"] = accountModel; 
return RedirectToAction("AccountSetup", "Home"); 

然後在其他動作:

var accountModel = (AccountViewModel)TempData["MyModel"]; 
int id = accountModel.UserId; 
相關問題