2012-02-21 19 views
2

我有下面的代碼通過類:如何通過RedirectToAction

public ActionResult Index() 
    { 
     AdminPreRegUploadModel model = new AdminPreRegUploadModel() 
     { 
      SuccessCount = successAddedCount, 
      FailureCount = failedAddedCount, 
      AddedFailure = addedFailure, 
      AddedSuccess = addedSuccess 
     }; 
     return RedirectToAction("PreRegExceUpload", new { model = model }); 
    } 

    public ActionResult PreRegExceUpload(AdminPreRegUploadModel model) 
    { 
     return View(model); 
    } 

但模型爲空時我斷點PreRegExcelUpload。爲什麼?

回答

0

使用會話傳遞模型方法:

public ActionResult Index() 
{ 
    AdminPreRegUploadModel model = new AdminPreRegUploadModel() 
    { 
     SuccessCount = successAddedCount, 
     FailureCount = failedAddedCount, 
     AddedFailure = addedFailure, 
     AddedSuccess = addedSuccess 
    }; 
    Session["someKey"] = model; 
    return RedirectToAction("PreRegExceUpload"); 
} 

public ActionResult PreRegExceUpload() 
{ 
    var model = (AdminPreRegUploadModel) Session["someKey"]; 
    Session["someKey"] = null; 
    return View(model); 
} 

方法RedirectToAction()不能採取非原始類型作爲參數,因爲URL參數是字符串。

+0

使用Session在方法之間傳遞對象?那麼使用TempData會更好。但我想正確傳遞... – John 2012-02-21 10:03:38

1

TempData僅僅是Session的一個「智能」包裝,它仍然採用相同的方式。

由於它只有4個字段,我會通過querystring傳遞它們。

總是試着避免會話/ tempdata在可能的情況下,在這種情況下,它當然是。

您確定這是您的完整代碼嗎?因爲它沒有意義。

如果您在POST後將某些數據保存到數據庫(例如),通常您重定向到傳遞唯一標識符(通常在保存後生成)的另一個操作,從數據庫獲取並返回風景。

這是更好的做法。

如果您更多地解釋您的情況,並顯示您使用的正確代碼,我可以進一步提供幫助。