2016-05-09 41 views
0

我在從一個動作轉移到另一個動作期間正在丟失數據在從一個動作轉移到另一個動作期間丟失數據

怎麼了?我這樣做:

public ActionResult Index(CV model) 
    { 
     return View(); 
    } 

    public ActionResult rr() 
    { 
     CV _cv = new CV(); 
     _cv.education = new List<Education>(); 
     _cv.education.Add(new Education() 
     { 
      Faculty = "sa", 
      OnGoing = false, 
      Specialization = "asdasd", 
      UniversityName = "sulxan", 
      EndDate = DateTime.Now.AddDays(1), 
      StartDate = DateTime.Now 

     }); 
     return RedirectToAction("Index", _cv); 
    } 

當我調試到索引參數model.education.count = 0而不是1 rr的行動是1所需的值。

我的模型類:

public class CV 
    { 

     public List<Education> education { get; set; } 
     public Education newEducation { get; set; } 
    } 

public class Education 
    { 
     public string UniversityName { get; set; } 
     public string Faculty { get; set; } 
     public string Specialization { get; set; } 
     public DateTime StartDate { get; set; } 
     public DateTime EndDate { get; set; } 
     public bool OnGoing { get; set; } 
    } 
+0

你肯定通過這個模型通過GET是最佳可用選項?爲什麼不把它存儲在會話中? – CodeCaster

+4

你不能通過使用'RedirectToAction()'傳遞一個包含複雜對象或集合的模型。你需要將模型保存在某個地方(數據庫/會話等),並在重定向到的方法中重新獲取它。 –

回答

0

您可以使用TempData的存儲實體和檢索data.use這段代碼

public ActionResult Index() 
{ 
    CV model = (CV)TempData["cv"]; 
    return View(); 
} 

public ActionResult rr() 
{ 
    CV _cv = new CV(); 
    _cv.education = new List<Education>(); 
    _cv.education.Add(new Education() 
    { 
     Faculty = "sa", 
     OnGoing = false, 
     Specialization = "asdasd", 
     UniversityName = "sulxan", 
     EndDate = DateTime.Now.AddDays(1), 
     StartDate = DateTime.Now 

    }); 
    TempData["cv"] = _cv; 
    return RedirectToAction("Index"); 
} 
+0

但如果用戶刷新瀏覽器,它將全部失敗:) –

+0

ya @Stephen。因爲他正在重定向,所以給了這個解決方案。否則ViewBag或ViewData將是適當的。 –

+0

我假設你不理解。 'TempData'只支持一個請求,所以如果用戶刷新瀏覽器,所有的數據都會丟失。 –

1

發佈一個答案,因爲我太小白髮表評論。

Stephen Muecke在他的評論中說的是完全正確的 - 而且,堅持數據顯然是非常重要的。另一個要注意的是,根據您發佈的代碼,你不需要RedirectToAction如果你正在試圖做的是你想要的視圖返回模型:

返回查看(「指數「, _簡歷);

當然,如果沒有看到應用程序的其他部分是如何構建的,那可能會導致問題。

0

您可以使用TempData的 這樣

public ActionResult Index() 
{ 
    var model = TempData["CV "] as CV; 
    return View(); 
} 

public ActionResult rr() 
{ 
    CV _cv = new CV(); 
    _cv.education = new List<Education>(); 
    _cv.education.Add(new Education() 
    { 
     Faculty = "sa", 
     OnGoing = false, 
     Specialization = "asdasd", 
     UniversityName = "sulxan", 
     EndDate = DateTime.Now.AddDays(1), 
     StartDate = DateTime.Now 

    }); 
    TempData["CV"] = _cv; 
    return RedirectToAction("Index"); 
} 
相關問題