2017-06-06 24 views
0

ASP.NET MVCのセッション変数にアクセスしたいが、JavaScript変数をキーとして使用したい。ここでjavascript変数をキーとしてasp.net mvcのセッション変数にアクセスするには?

は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] }); 
} 

あなたが欲しいものachiveする方法単なる一例です。構文エラーがある可能性があります。

OR

あなたは、既存のAjaxはSessionUserIdをという名前のフィールドを引き起こし、それがサーバ側での値だ定義を追加することができます。

0

非常に単純です。これを試してください。

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

ここでcompanyIdValはjavascript変数です。ここでcompanyIdはセッション変数のキーです。 これが役に立ちます。

0

お客様のクエリから、クライアント側にサーバー側の値が必要なようです。 Javascriptはブラウザで実行されるため、サーバーの「セッション」オブジェクトにアクセスすることはできません。

したがって、次の代替を試してください。 1.サーバーへのajax呼び出しを行い、応答としてSession値を取得します。 2.ログイン中に、ブラウザによって提供されるサービスsessionStorageに値を保存します。

ありがとう

関連する問題