2017-06-08 30 views
0

我使用ASP.Net MVC 5來構建一個Web應用程序並使用jQuery。我有一個單一的頁面應用程序,我使用索引操作設置會話變量並顯示視圖。此外,我使用jQuery來調用Get和Post Ajax請求來在同一個控制器上執行操作。問題在於訪問Sesssion變量。我在索引操作中設置會話變量,並嘗試訪問由jquery調用的post操作中的相同變量。請建議,如果有什麼,我失蹤。MVC中使用jQuery Ajax的會話變量

我的控制器類是類似下面:

public class HomeController : Controller 
{ 
    public async Task<ActionResult> Index() 
    { 
     var obj = new SomeObject(); 
     Session["UserName"] = Request.QueryString["UserName"]; 

     return View(obj); 
    } 

    //Invoked by jQuery Ajax method.. 
    [HttpPost] 
    [Route("home/GetResponse/")] 
    public async Task<JsonResult> GetResponse(string message) 
    { 
     var userName = Convert.ToString(Session["UserName"]);// Getting Null 
     //Perform some stuff and return json 
    } 
} 
+0

如果可能的話顯示你的代碼, –

+0

你可以用TempData的感謝嘗試 –

回答

0

Session變量是單頁,這意味着如果沒有加載或刷新頁面也不會改變不變。 因此,在Ajax提交的成功中,您必須手動放置會話的值。 如果<span id="demoid">@session["client_name"]</span>

然後

 success: function(data) 
     { 
      $("#demoid").html(data); // here data is the value for the session 
     }