2011-09-30 135 views
1

調用RedirectToAction()之後擦除我用一個簡單的序列:會話狀態的ASP.NET MVC 3

  1. 設置一個會話狀態中[HTTPGET]方法。
  2. 在[HttpPost]方法中使用RedirectToAction()重定向到另一個操作。
  3. 想要獲取目標中該會話狀態的值。

問題:

如果用戶點擊「提交」按鈕對我的「表」視圖中,所有的內部會議上得到的數據清除,我不能在目的地的行動讓他們(這是「表」 )。下面是代碼:

[HttpGet] 
    public ActionResult Edit(string TableName, int RowID, NavigationControl nav) 
    { 
     if (nav != null) Session["NavigationData"] = nav; 

     myService svc = new myService (_repository); 
     EditViewModel model = new EditViewModel(); 

     model.TableDefinitions = svc.GetTableDefinition(TableName); 
     model.RowData = svc.GetRowData(model.TableDefinitions.Name, RowID); 

     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Edit(EditViewModel model) 
    { 
     MyService svc = new MyService (_repository); 
     svc.SaveRowData(model.TableDefinitions.Name, model.RowData); 
     return RedirectToAction("Table"); 
    } 

    public ActionResult Table(string TableName) 
    { 
     myService svc = new myService (_repository); 

     TableViewModel model = new TableViewModel(); 
     model.TableDefinition = svc.GetTableDefinition(TableName); 

     NavigationControl nav = (NavigationControl)Session["NavigationData"]; 
     if (nav != null) 
     { 
      model.NavigationControl = nav; 
     } 

     return View(model); 
    } 

,並且當用戶通過到達它會話[「NavigationData」]總是空:返回RedirectToAction(「表」)。 如果用戶在「編輯」視圖上點擊HTML鏈接,Session [「NavigationData」]可以在「Table」方法中恢復其值!

想知道發生了什麼? 誰刪除會話狀態?

+1

你在負載均衡器下運行應用程序嗎? – ryudice

+0

什麼是「負載平衡器」?我在visual studio 2010,asp.net開發服務器(cassini)下運行它。 – Tohid

回答

0

我的瀏覽器cookie已關閉,但狀態未設置爲無cookie。