2017-06-06 86 views
0

我想訪問ASP.NET MVC中的Session變量,但是使用JavaScript變量作爲鍵。如何在asp.net mvc中使用javascript變量作爲鍵訪問會話變量?

這裏是一個Ajax調用成功集團爲例:

success: function (data) { 
    $.each(data, function (idx, user) { 

     var sessionUserId = '@Session[" ' + user.Id + ' "]'; //this doesn't seem to work 

    } 

任何幫助,將不勝感激。

謝謝。

+0

不要以爲你可以做到這一點...... Java腳本運行在客戶端,會話保持在服務器上! – Wheels73

+0

'@ Session'是服務器端代碼。 Javascript是客戶端代碼。 –

+0

你只能在cshtml文件中做這種類型的東西 –

回答

1

您不能在服務器端代碼中使用客戶端變量。您必須將此客戶端值發佈到服務器(基本上這是Client-Server Architecture的工作原理)。

可能是你可以從控制器使用ajax,somethig如下所示的sessionId;

jQuery的

$.get("SomeController/GetSessionId?userId=" + user.Id, function(result) 
{ 
    var sessionUserId = result.SessionId; 
}); 

SomeController.cs

public ActionResult GetSessionId(string userId) 
{ 
    return Json(new JsonResult { SessionId = Session[userId] }); 
} 

上面的代碼只是例子,如何才達到你想要什麼。可能有語法錯誤。

OR

你可以添加你現有的AJAX導致一個名爲SessionUserId場,並確定它在服務器端的價值。

0

非常簡單,試試這個。

var CompanyIdVal = '@Session["CompanyId"]'; 

這裏companyIdVal是javascript變量^其中companyId是會話變量的關鍵。 我希望這會有所幫助

0

從您的查詢看來,您似乎需要客戶端上的服務器端值。 由於Javascript是由您的瀏覽器運行的,您將無法訪問服務器的「Session」對象。

因此請嘗試以下替代方法: 1.向您的服務器發出ajax調用並獲取您的Session值作爲響應。 2.在登錄期間,將您的值存儲在瀏覽器提供的sessionStorage服務中。

謝謝