ASP.NETでSessionを使ってセッション変数を指定・取得する方法
ASP.NETでWebアプリケーションを作成する場合、Web画面間でデータをやり取りすることが多々あります。やり取りの方法はいくつかありますが、その中のひとつであるセッション変数を利用する方法について確認していきましょう。
- システム
エンジニア - すいません。今の現場でhidden項目を活用して画面間のデータの受渡しを実装していたのですが、先輩に怒られちゃいました。データの受渡しは、他の方法で実装する必要があるのでしょうか?
- プロジェクト
リーダー - クライアント側のプログラムって各々のChromeやIEなどのブラウザから閲覧可能ですよね。画面からは隠れていてもプログラムソースではバッチリ確認できます。ソースを読める方なら容易にデータを取得できますから、見られるとダメなデータは基本的にセッション変数を使用します。
ASP.NETのセッション変数とは
ASP.NETだけでなく、Webアプリケーションを開発する現場で、よく出てくるのがセッション変数になります。セッション変数とは、セッションIDと紐づけてサーバー側に格納する変数のことです。サーバーに格納するとセッションが有効な間は、そのセッション変数に格納されているデータを複数の画面から参照することができます。
とても便利な変数で、多くの開発者が利用しています。しかし便利な反面、セッションの値が奪われないか、改竄されないかといったリスク対策も頭に入れておく必要があります。
セッション変数を使った値の指定や取得方法について
ここではC#を活用して、セッション変数を利用するサンプルソースを紹介します。
C# セッション変数受渡し画面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Text1" maxlength="5" name="Text1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="画面遷移" hidefocus="true" onclick="Button1_click" />
</div>
</form>
</body>
</html>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
using System;
namespace WebApplication2
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void Button1_click(object sender, EventArgs e)
{
Session["変数名1"] = Text1.Text;
Response.Redirect("WebForm2.aspx");
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication2.WebForm2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System;
namespace WebApplication2
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["変数名1"] != null)
{
Label1.Text = (string)Session["変数名1"];
}
}
}
}
|
テスト実行
WebForm1画面にて、テキストボックスに”test”を入力して、画面遷移ボタンを押下します。
実行結果
WebForm2画面にて、遷移した値”test”がラベルに反映されています。
- システム
エンジニア - セッション変数でやり取りする方法って意外と簡単ですね。セッションって聞いて勝手に難しそうだと思い込んでいましたが、便利なのでたくさん使っちゃいそうです。そして画面間でのデータの受渡しには、hidden項目はこれから使用しないようにします。
- プロジェクト
リーダー - そうですね。hidden項目を利用して重要なデータの受渡しを行うことは、Web業界ではご法度です。セッション変数という便利な変数が準備されていますので、積極的に活用していきましょう。
Web開発ではセッション変数の理解が必要です
Webアプリケーションを開発する現場では、セッション変数は多く見受けられます。サンプルソースからでもわかるように、とても便利で簡単です。初心者の方でもすぐに実装できるので、積極的に活用していきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
ASP.NET新着案件New Job
-
Web受注システム運用保守/VB.NET/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
Web受注システム開発のテスター/VB.NET/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅) -
営業フロントシステム開発のテスター/ASP.NET/東京都江東区/【WEB面談可】
月給25万~35万円東京都江東区(木場駅) -
営業フロントシステム開発/ASP.NET/東京都江東区/【WEB面談可】
月給35万~41万円東京都江東区(木場駅) -
Web受注システム開発/VB.NET/東京都港区/【WEB面談可】
月給45万~60万円東京都港区(品川駅)