| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「ASP.NET 2005 ページ間データ受け渡し」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==ASP.NET 2005 ページ間データ受け渡し== [SCWCD]] ASP.NET 2005][ASP.NET][Visual Studio][C#][[[Java EE(SCWCD)] *http://msdn.microsoft.com/ja-jp/netframework/ee…」)
 
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
==ASP.NET 2005 ページ間データ受け渡し==
+
==[[ASP.NET 2005 ページ間データ受け渡し]]==
[SCWCD]] ASP.NET 2005][ASP.NET][Visual Studio][C#][[[Java EE(SCWCD)]
+
[ASP.NET 2005][ASP.NET][Visual Studio][C#][[SCWCD]|[Java EE(SCWCD)]]
 
*http://msdn.microsoft.com/ja-jp/netframework/ee692374.aspx
 
*http://msdn.microsoft.com/ja-jp/netframework/ee692374.aspx
===Cookie===
+
===[[Cookie]]===
 
*Web アプリケーションは履歴やユーザー設定などのユーザー固有の情報を格納できます
 
*Web アプリケーションは履歴やユーザー設定などのユーザー固有の情報を格納できます
*ブラウザは、Cookie をクライアント コンピュータで管理します
+
*ブラウザは、[[Cookie]] をクライアント コンピュータで管理します
*Cookies というプロパティを公開する HttpResponse オブジェクトを使用してクライアントに送信されます
+
*[[Cookie]]s というプロパティを公開する HttpResponse オブジェクトを使用してクライアントに送信されます
*Web アプリケーションからブラウザに送信するすべての Cookie は、このコレクションに追加する必要があります
+
*Web アプリケーションからブラウザに送信するすべての [[Cookie]] は、このコレクションに追加する必要があります
*Cookie は、ASP.NET ページをクライアントにレンダリングする前に作成する必要があります
+
*Cookie は、[[ASP.NET]] ページをクライアントにレンダリングする前に作成する必要があります
====Cookie を記述するには、2 つの方法====
+
====[[Cookie]] を記述するには、2 つの方法====
=====Cookie のプロパティを直接 Cookies コレクションに設定=====
+
=====[[Cookie]] のプロパティを直接 [[Cookie]]s コレクションに設定=====
 
  Response.Cookies["UserSettings"]["Font"] = "Arial";
 
  Response.Cookies["UserSettings"]["Font"] = "Arial";
  
=====HttpCookie オブジェクトのインスタンスを作成してから Cookies コレクションに追加=====
+
=====Http[[Cookie]] オブジェクトのインスタンスを作成してから [[Cookie]]s コレクションに追加=====
  HttpCookie myCookie = new HttpCookie("UserSettings");
+
  Http[[Cookie]] my[[Cookie]] = new Http[[Cookie]]("UserSettings");
 
  myCookie["Font"] = "Arial";
 
  myCookie["Font"] = "Arial";
  Response.Cookies.Add(myCookie);
+
  Response.[[Cookie]]s.Add(my[[Cookie]]);
  
  
23行目: 23行目:
 
====Session データの関連付け====
 
====Session データの関連付け====
 
*一意の識別子を使用して特定のブラウザ セッションに関連付けられます
 
*一意の識別子を使用して特定のブラウザ セッションに関連付けられます
*既定では、この識別子はブラウザの無期限のセッション Cookie に格納
+
*既定では、この識別子はブラウザの無期限のセッション [[Cookie]] に格納
*セッション識別子を URL に格納するようにアプリケーションを構成することもできる
+
*セッション識別子を U[[R]]L に格納するようにアプリケーションを構成することもできる
**cookieless 属性の UseDeviceProfile の値を指定すると、ブラウザが Cookie をサポートしているかどうかを確認でる。
+
**cookieless 属性の UseDevice[[Profile]] の値を指定すると、ブラウザが Cookie をサポートしているかどうかを確認でる。
**cookieless 属性の AutoDetect の値を指定すると、ブラウザで Cookie が有効になっているかどうかも確認できる。
+
**cookieless 属性の AutoDetect の値を指定すると、ブラウザで [[Cookie]] が有効になっているかどうかも確認できる。
**UseDeviceProfile を指定しCookie がサポートされている、または AutoDetect を指定したときに Cookie が有効ならセッション識別子を Cookie に格納
+
**UseDevice[[Profile]] を指定しCookie がサポートされている、または AutoDetect を指定したときに Cookie が有効ならセッション識別子を Cookie に格納
**それ以外の場合はセッション識別子を URL に格納します。
+
**それ以外の場合はセッション識別子を U[[R]]L に格納します。
 
====値を読む====
 
====値を読む====
 
  string firstName = (string)(Session["First"]);
 
  string firstName = (string)(Session["First"]);
39行目: 39行目:
  
 
===QueryString===
 
===QueryString===
*HttpRequest.QueryString プロパティに、クライアントから送信されたクエリ文字列変数のコレクションを格納
+
*Http[[R]]equest.QueryString プロパティに、クライアントから送信されたクエリ文字列変数のコレクションを格納
  
===HttpRequest.Params ===
+
===Http[[R]]equest.Params ===
*QueryString、Form、ServerVariables、Cookies の各項目が組み合わされたコレクションを取得
+
*QueryString、Form、ServerVariables、[[Cookie]]s の各項目が組み合わされたコレクションを取得
===Session と Cookie と QueryString を利用する例===
+
===Session と [[Cookie]] と QueryString を利用する例===
 
====Defaut.aspx====
 
====Defaut.aspx====
 
=====画面=====
 
=====画面=====
54行目: 54行目:
 
|-
 
|-
 
|HyperLink1
 
|HyperLink1
|NavigateUrl
+
|Na[[vi]]gateUrl
 
|~/Page2.aspx?state=1
 
|~/Page2.aspx?state=1
 
|QueryStringの例
 
|QueryStringの例
 
|-
 
|-
 
|HyperLink2
 
|HyperLink2
|NavigateUrl
+
|Na[[vi]]gateUrl
 
|~/Page2.aspx?state=2
 
|~/Page2.aspx?state=2
 
|QueryStringの例
 
|QueryStringの例
72行目: 72行目:
 
     if (!IsPostBack)
 
     if (!IsPostBack)
 
     {
 
     {
         // Cookie の設定
+
         // [[Cookie]] の設定
         Response.Cookies.Add(new HttpCookie("Data1", "Hello"));
+
         Response.[[Cookie]]s.Add(new Http[[Cookie]]("Data1", "Hello"));
 
         // Session の設定
 
         // Session の設定
 
         Session["Data2"] = "こんにちは";
 
         Session["Data2"] = "こんにちは";
82行目: 82行目:
 
  protected void Button1_Click(object sender, EventArgs e)
 
  protected void Button1_Click(object sender, EventArgs e)
 
  {
 
  {
     // Cookie に値を設定
+
     // [[Cookie]] に値を設定
 
     Response.Cookies["Data1"].Value = TextBox1.Text;
 
     Response.Cookies["Data1"].Value = TextBox1.Text;
 
     // QueryStringを付加してリダイレクト
 
     // QueryStringを付加してリダイレクト
     Response.Redirect("~/Page2.aspx?state=1");
+
     [[R]]esponse.[[R]]edirect("~/Page2.aspx?state=1");
 
  }
 
  }
 
  protected void Button2_Click(object sender, EventArgs e)
 
  protected void Button2_Click(object sender, EventArgs e)
92行目: 92行目:
 
     Session["Data2"] = TextBox1.Text;
 
     Session["Data2"] = TextBox1.Text;
 
     // QueryStringを付加してリダイレクト
 
     // QueryStringを付加してリダイレクト
     Response.Redirect("~/Page2.aspx?state=2");
+
     [[R]]esponse.[[R]]edirect("~/Page2.aspx?state=2");
 
  }
 
  }
  
104行目: 104行目:
 
     Label1.Text = Request.QueryString["state"];
 
     Label1.Text = Request.QueryString["state"];
 
   
 
   
     // Cookie を利用して受け渡された値を表示
+
     // [[Cookie]] を利用して受け渡された値を表示
 
     Label2.Text = Request.Cookies["Data1"].Value;
 
     Label2.Text = Request.Cookies["Data1"].Value;
 
   
 
   
110行目: 110行目:
 
     Label3.Text = (String)Session["Data2"];
 
     Label3.Text = (String)Session["Data2"];
 
   
 
   
     // すべてのパラメータを含む Request.Params の内容を確認
+
     // すべてのパラメータを含む [[R]]equest.Params の内容を確認
 
     StringBuilder sb = new StringBuilder();
 
     StringBuilder sb = new StringBuilder();
     NameValueCollection p = Request.Params;
+
     NameValueCollection p = [[R]]equest.Params;
     for (int i=0; i < p.Count; i++) {
+
     for (int i=0; i &lt; p.Count; i++) {
         sb.Append(String.Format("{0} = {1}<br/>", p.GetKey(i), p.Get(i)));
+
         sb.Append(String.Format("{0} = {1}&lt;br/&gt;", p.GetKey(i), p.Get(i)));
 
     }
 
     }
 
     Literal1.Text = sb.ToString();
 
     Literal1.Text = sb.ToString();

2020年2月16日 (日) 04:22時点における最新版

ASP.NET 2005 ページ間データ受け渡し

[ASP.NET 2005][ASP.NET][Visual Studio][C#][[SCWCD]|[Java EE(SCWCD)]]

Cookie

  • Web アプリケーションは履歴やユーザー設定などのユーザー固有の情報を格納できます
  • ブラウザは、Cookie をクライアント コンピュータで管理します
  • Cookies というプロパティを公開する HttpResponse オブジェクトを使用してクライアントに送信されます
  • Web アプリケーションからブラウザに送信するすべての Cookie は、このコレクションに追加する必要があります
  • Cookie は、ASP.NET ページをクライアントにレンダリングする前に作成する必要があります

Cookie を記述するには、2 つの方法

Cookie のプロパティを直接 Cookies コレクションに設定
Response.Cookies["UserSettings"]["Font"] = "Arial";
HttpCookie オブジェクトのインスタンスを作成してから Cookies コレクションに追加
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
Response.Cookies.Add(myCookie);


Session

  • 複数の要求に対して一意のブラウザ セッションに関連付けられた情報を格納するためのセッション状態管理機能を提供
  • HttpContext の Session プロパティまたは Page の Session プロパティを使用してアクセス可能な HttpSessionState クラスを使用してアクセス

Session データの関連付け

  • 一意の識別子を使用して特定のブラウザ セッションに関連付けられます
  • 既定では、この識別子はブラウザの無期限のセッション Cookie に格納
  • セッション識別子を URL に格納するようにアプリケーションを構成することもできる
    • cookieless 属性の UseDeviceProfile の値を指定すると、ブラウザが Cookie をサポートしているかどうかを確認でる。
    • cookieless 属性の AutoDetect の値を指定すると、ブラウザで Cookie が有効になっているかどうかも確認できる。
    • UseDeviceProfile を指定しCookie がサポートされている、または AutoDetect を指定したときに Cookie が有効ならセッション識別子を Cookie に格納
    • それ以外の場合はセッション識別子を URL に格納します。

値を読む

string firstName = (string)(Session["First"]);

値を保存

Session["FirstName"] = firstName;



QueryString

  • HttpRequest.QueryString プロパティに、クライアントから送信されたクエリ文字列変数のコレクションを格納

HttpRequest.Params

  • QueryString、Form、ServerVariables、Cookies の各項目が組み合わされたコレクションを取得

Session と Cookie と QueryString を利用する例

Defaut.aspx

画面

0192 asp42.jpg

コントロール プロパティ 内容
HyperLink1 NavigateUrl ~/Page2.aspx?state=1 QueryStringの例
HyperLink2 NavigateUrl ~/Page2.aspx?state=2 QueryStringの例
ソース
protected void Page_Load(object sender, EventArgs e)
{
    // Page(Webフォーム自身)のIsPostBack プロパティを調べて、
    // ポストバックによる再表示か、初回表示かを確認
    if (!IsPostBack)
    {
        // Cookie の設定
        Response.Cookies.Add(new HttpCookie("Data1", "Hello"));
        // Session の設定
        Session["Data2"] = "こんにちは";
    }
    Label1.Text = Response.Cookies["Data1"].Value;
    Label2.Text = (String)Session["Data2"];
}
protected void Button1_Click(object sender, EventArgs e)
{
    // Cookie に値を設定
    Response.Cookies["Data1"].Value = TextBox1.Text;
    // QueryStringを付加してリダイレクト
    Response.Redirect("~/Page2.aspx?state=1");
}
protected void Button2_Click(object sender, EventArgs e)
{
    // Session に値を設定
    Session["Data2"] = TextBox1.Text;
    // QueryStringを付加してリダイレクト
    Response.Redirect("~/Page2.aspx?state=2");
}

Page2.aspx

画面

0193 asp43.jpg

ソース
protected void Page_Load(object sender, EventArgs e)
{
    // QueryString として 受け渡された値を表示
    Label1.Text = Request.QueryString["state"];

    // Cookie を利用して受け渡された値を表示
    Label2.Text = Request.Cookies["Data1"].Value;

    // Session を利用して受け渡された値を表示
    Label3.Text = (String)Session["Data2"];

    // すべてのパラメータを含む Request.Params の内容を確認
    StringBuilder sb = new StringBuilder();
    NameValueCollection p = Request.Params;
    for (int i=0; i < p.Count; i++) {
       sb.Append(String.Format("{0} = {1}<br/>", p.GetKey(i), p.Get(i)));
    }
    Literal1.Text = sb.ToString();
}

実行

Default.aspx

0194 asp44.jpg

Page2.aspx

0195 asp45.jpg