Qu n lý tr ng thái

 Nguy n Hà Giang

Nguyen Ha Giang

N i dung

2

 Đ i t

ố ượ ng Request ­ Response

 Qu n lý tr ng thái

 View state

 Session state

 Cookie

 Application state

 Query string

 Cross­page Postback

Nguyen Ha Giang

ả ạ

Request­Response

3

Nguyen Ha Giang

ố ượ

Đ i t

ng Request

4

 Request là m t th  hi n c a l p HttpRequest, Browser

ầ ể ệ ủ ớ ể ử ế ớ t t i

dùng Request object đ  g i thông tin c n thi Server

ừ ử client g i lên (header, query

Nguyen Ha Giang

ể ọ  Dùng đ  đ c thông tin t string, cookies, …)

ố ượ

Đ i t

ng Request

5

 RequestType: tr  v  ph

ế ồ ng th c truy n d  li u t ươ ứ ả ề ươ client đ n server g m 2 ph ề ữ ệ ừ   ng th c POST và GET

 Request.Form(“đ i t  g i theo POST

ố ượ ầ ầ ọ ị ọ ng c n đ c”): đ c giá tr  ph n

ử ở t

 Request.QueryString(“đ i t ầ ử ượ ở  đ

ố ượ ọ

Nguyen Ha Giang

ộ ủ c a m t ph n t ầ ươ c g i theo ph ọ ị ng c n đ c”): đ c giá tr   ứ ng th c GET

Request ­ POST

6

 Có giao di nệ

Nguyen Ha Giang

Request ­ POST

7

Nguyen Ha Giang

Request ­ POST

8

 L y giá tr  c a UserName và Password trên form

Nguyen Ha Giang

ị ủ ấ

Request ­ GET

9

 L y d  li u t

ấ ữ ệ ừ form

 N u không có giá tr  thì tr  v  là null

Nguyen Ha Giang

ả ề ế ị

Request ­ GET

10

Nguyen Ha Giang

Request ­ GET

11

 T i Server, CheckUser.aspx l y giá tr  c a UserName và

ị ủ ạ ấ

Nguyen Ha Giang

Password

Request ­ GET

12

 Ví dụ

ố ấ  T i ReadNews.aspx mu n l y giá catID and NewsID,

Nguyen Ha Giang

ạ ử ụ s  d ng cú pháp

ố ượ

Đ i t

ng Response

13

 Đ i t

ố ượ ở ộ ệ ấ ỳ ề ng g i n i dung b t k  v  cho trình duy t

 Ph

ươ ứ ng th c:

ể ử

ị ể

ứ  Response.Write() dùng đ  g i giá tr  bi u

th c truy n vào cho phía trình duy t.

ể ớ

ị  Response.Redirect(“đ a ch  URL”): Chuy n t

i m t trang

Nguyen Ha Giang

khác.

ố ượ

Đ i t

ng Response

14

 Các ph

 Response.Clear(): xóa vùng t mạ

ươ ứ ng th c

 Response.Flush(): dùng đ a d  li u còn trong b  đ m

ư ữ ệ ộ ệ

ề ệ phía server v  cho trình duy t

ử ế  Response.End(): k t thúc ti n trình x  lý trên Server và

Nguyen Ha Giang

ẩ ữ ệ ớ đ y d  li u t ế i client.

ố ượ

Đ i t

ng Response

15

ộ  Thu c tính:

ị  Buffer: có hai giá tr  quy đ nh cách truy n t

ề ả ữ ệ i d  li u

 True: hoàn t

ầ t công vi c và g i 1 l n

ở ế

ế

 False: th c hi n xong đ n đâu thì g i đ n đó.

Nguyen Ha Giang

ố ượ

Đ i t

ng Server

16

ứ ụ ấ

ươ ứ ể ấ ủ  Cung c p các thông tin c a server cho  ng d ng, bao  ng th c, mã hóa, chuy n trang, l y mã

ồ g m các ph i.ỗ l

 Các thu c tính:

 MachineName: tên server

ế ậ

 ScriptTimeout: thi

t l p th i gian x  lý t

i đa cho m t

file.

Nguyen Ha Giang

ố ượ

Đ i t

ng Server

17

 Các ph

ươ ứ ng th c

ạ ườ

ẫ ả

ườ

 MapPath(“URL”): ánh x  đ

ng d n  o thành đ

ng

ậ ẫ d n v t lý cho t p tin trên server.

 Cú pháp

Server.MapPath(path)

ệ ườ

ẫ ươ

ng d n t

ố ủ ậ ng đ i c a t p tin

ỗ  Path là chu i th c hi n đ ụ

trên  ng d ng web.

ứ ẽ ả ề

ự ườ

ng th c s  tr  v  chu i hi n th c đ

ng d n v t lý

 Ph

ươ ủ ậ c a t p tin đó

Nguyen Ha Giang

ố ượ

Đ i t

ng Server

18

 Transfer: g i t

ử ở t c  thông tin mà server đang x  lý

ệ ử ấ ả trang hi n hành sang trang khác

Server.Transfer(path)

 Trong đó tham s  path là đ

ố ườ ẫ ậ ầ ng d n t p tin aspx c n

 L u ý:ư

chuy nể

ỉ ế ườ

ẫ ươ

 Kí hi u “~” ch  đ n đ

ng d n t

ố ng đ i

ỉ ế ườ

 Kí hi u “..” ch  đ n đ

ệ ố ng d n tuy t đ i

Nguyen Ha Giang

 Server.Transfer khác v i Reponse.Redirect

ố ượ

Đ i t

ng Server

19

ẻ ể  HtmlDecode(str): dùng đ  mã hóa th  HTML thành

 Ví d :ụ <% response.write(Server.HTMLEncode("The image tag: ")) %>

source:

The image tag:

Web browser output:

The image tag:

Nguyen Ha Giang

chu iỗ

ố ượ

Đ i t

ng Server

20

 HtmlEncode(str): dùng đ  gi

 Ví d :ụ

Str = “m>10” Str = Server.HtmlDecode(str); // kết quả m>10

Nguyen Ha Giang

ể ả ẻ i mã th  HTML

Quick test

using System;

public class User     {         private string Name { get; set; }     }

using System.Collections.Generic; using System.Web.UI; using System.Windows.Forms; namespace Demo{     public partial class _Default : Page   {         private readonly List _source = new List();         protected override void OnInit(EventArgs e)        {             base.OnInit(e);             Button1.Click += Button1_Click;             Button2.Click += Button2_Click;        }

protected void Page_Load(object sender, EventArgs e)     {            _source.Add(new User());        }

Không dùng máy tính, giả sử có 1 web app có 2 button là button1 , button2! Khi chạy app, user click vào button1 3 lần, sau đó click vào button2 thì messagebox sẽ show ra giá trị _source.Count bằng bao nhiêu ! Tại sao ?

public void Button1_Click(object sender, EventArgs e)     {            _source.Add(new User ());         }     public void Button2_Click(object sender, EventArgs e)     {            _source.Add(new User());                  MessageBox.Show(_source.Count.ToString());      }    }    }

View state

22

 View State

 K   thu t  dùng  đ   l u  tr   thông  tin  c a  m t  trang  web

ể ư ầ

ASP.NET qua các l n post back.

ộ ủ

 Do  d   li u  c c  b   c a  trang  web  (l p  page)  ch   t n  t

ữ ệ ử

ỉ ồ ạ ỷ

i  ử khi x  lý trên server. Khi x  lý xong thì page b  hu , nên  ỷ ữ ệ ụ ộ ủ d  li u c c b  c a page cũng b  hu .

ồ ạ

i xuyên  su t các  l n  post  back

ữ ệ  Nh ng  d  li u  nào t n  t ặ

ế

thì nên đ t là bi n view state.

ữ ệ ẽ ượ ư

 Khi đó d  li u s  đ

c l u gi

qua các l n post back.

Nguyen Ha Giang

View state

23

 Cho phép l u các ki u d  li u c a .NET

ể ữ ệ ủ ư

ữ ở ủ ư  L u tr client side, trong hidden field c a trang web

ữ ư ấ ữ ệ ủ ầ

 L u tr  trong các l n post back c a trang. M t d  li u  ớ khi user nh p vào URL m i

ớ ạ ộ ạ  Ph m vi gi i h n trong m t trang web

ở ạ tr ng thái insecure. Tuy nhiên ta

ế ậ ể ả  B o m t ể có th  thi ặ ị ậ : m c đ nh  t l p page directive đ  mã hóa

ư ớ ế: l u tr  s  l ng l n thông tin trong viewstate

ậ ữ ố ượ  H n chạ ờ ẽ s  làm ch m th i gian response và request

 Th

Nguyen Ha Giang

ể ặ ệ ủ ặ ng dùng đ  cài đ t thông tin đ c bi t nào đó c a

ườ page

View state

24

 View state là  u tiên

ư ọ ự ầ ầ ư ữ  ch n l a đ u tiên khi c n l u tr

ủ ạ ộ thông tin trong ph m vi c a m t trang web!

 View state cũng đ

ượ ử ụ ở

c s  d ng b i ASP.NET Web  ộ ữ

ữ ầ control, cho phép các control này duy trì nh ng thu c  tính gi a các l n post back

 Có th  add d  li u vào

ữ ệ ể

int count; if (ViewState["Count"] == null)      count = 0; else      count = (int) ViewState["Count"]; count += 1;      ViewState["Count"] = count;

view state collection

ố ầ

ộ thông qua thu c tính

Label1.Text = string.Format("S  l n  postback {0}", count);

Nguyen Ha Giang

Page.ViewState

View state

25

 Advantages:

ử ụ  View state không s  d ng memory trên server

ư

 View state cũng không b  ràng bu c nào (nh  time out)

ử ụ ạ ố ế  Tình hu ng h n ch  khi s  d ng view state

ứ ộ

ữ ệ

ế ư

ầ  C n thi

ữ d  li u có m c đ  nh y c m cao. View  t l u tr ể

ạ ả ự

ọ ố ơ

ư

state cũng có th  mã hóa, nh ng session l a ch n t

t h n.

ế ư

ử ụ

ượ

ầ  C n  thi

t  l u  tr   thông  tin  đ

c  s   d ng  trong  nhi u  ử ụ trang.  Trong  tình  hu ng  này  ta  s   d ng  session,  cookie  ho c query string.

ậ ặ

t l u tr  thông tin l n và không mu n làm ch m  i,  nên  s   d ng  database,  cache  ho c

ữ ớ ế ư ầ  C n thi Nguyen Ha Giang ử ụ ề ả ờ th i  gian  truy n  t session.

Session

 HTML  đ nh nghĩa các quy lu t đ  truy n t

ậ ể ề ả ị

(cid:0) ữ ệ i thông tin   là

text, graphic, video và các d  li u khác qua WWW  ạ d ng giao th c “ ứ stateless”

 M i request s  không bi

ẽ ế ấ ứ ề t b t c  thông tin gì v  request

ỗ ướ ặ tr c đó ho c request sau này.

 H n ch  khi xây d ng  ng d ng web ph c t p, quan tâm

ứ ạ ụ ế

ủ ự ứ ườ ạ ế đ n hành vi c a ng i dùng (e­commerce)

 C n ph i có c  ch  nào đó đ  kh c ph c v n đ  trên!

Nguyen Ha Giang

26

ụ ấ ơ ế ể ề ả ầ ắ

Session là gì?

User 2

User 1

Session: user 1 Session: user 2 Session: user 3

User 3

Nguyen Ha Giang

27

Session là gì?

Nguyen Ha Giang

28

Session là gì?

ệ ệ  Khái ni m phiên làm vi c

 M i khi user request m t trang web (l n đ u tiên) thì phiên

ệ ượ ạ

làm vi c đ

c t o ra.

ộ ố

ệ ượ ấ

ạ  M t s  nh n d ng phiên làm vi c đ

ở c c p b i server

ệ ế

 Phiên làm vi c k t thúc khi

ườ ậ

 Ng

i l p trình h y

ế

 K t thúc cycle life

 User đóng trình duy tệ

 Phiên làm vi c là cách th c trau đ i/chia x  d  li u gi a

Nguyen Ha Giang

29

ẻ ữ ệ ứ ữ ệ ổ

các trang web trong Web app.

Session

 Cho phép l u tr  d  li u ki u .NET

ữ ữ ệ ư ể

ớ ủ ữ ư ộ  L u tr  trên b  nh  c a server

ộ ờ

ị ặ ể ổ ả ế  Th i gian s ng k t thúc sau m t kho ng th i gian đ nh  ườ ng  là  20  phút,  có  th   thay  đ i,  ho c

ờ ố ướ th c  ( nghĩa  tr ủ ) ậ l p trình h y

 Ph m vi toàn b   ng d ng .NET

ộ ứ ụ ạ

ậ ể

ữ ệ ư ả  Tính b o m t cao, do d  li u l u tr  trên server, không  ỗ ờ session  bao gi  chuy n cho client và m i client có client  id riêng

Nguyen Ha Giang

30

ư

ậ ờ ườ ề ậ ặ ồ ể  L u tr  session v i d  li u l n cũng có th  làm ch m  i  truy  c p  đ ng  th i, ớ ữ ệ ớ t  n u  nhi u  ng

ỗ ữ ệ ế server,  đ c  bi ả ẽ do m i user s  có b n copy session riêng!

Session

 M i user s  đ

ẽ ượ ỗ ị ọ ộ ị c gán m t giá tr  g i là Session id, giá tr

này là duy nh tấ

 Đ c l u tr  trong non­persistent cookie cho đ n khi

ượ ư ữ ế

ệ trình duy t đóng.

 Session state s  d ng cú pháp collection nh  là view state

int count; if (Session["Count"] == null)          count = 0; else          count = (int)Session["Count"]; count++; Session["Count"] = count;

Nguyen Ha Giang

31

ử ụ ư

Session – c u hình

ể ờ ố ế ậ ủ  Th i gian s ng c a session có th  thi t l p thông qua

web.config

ể ệ  Session có th  làm vi c mà không c n cookie

 Trong tr

Nguyen Ha Giang

32

ườ ữ ư http://server/(h44a1e55c0breu552yrecobl)/page.aspx ng này Session ID l u tr  trong URL

Cookie

ữ ạ ỉ ỗ ư  Ch  cho phép l u tr  d ng chu i

 L u tr  trên máy c a client (trong b  nh  ho c file text

ữ ủ ặ ớ ộ

ư nh )ỏ

 Lifetime đ

ế ậ ượ ở i l p trình, đ ượ ử c s

ườ ậ ầ c thi ề t l p b i ng ụ d ng trong nhi u trang và trong các l n visit site

 Ph m vi toàn b   ng d ng .NET

ộ ứ ụ ạ

 Không b o m t, do toàn b  d  li u đ

ả ộ ữ ệ ượ ở c g i cho client.

ễ ể ậ Cookie có th  modify d  dàng.

 T

ự ư ế ỉ ử ụ ữ ệ ạ ng t nh  view state, h n ch  ch  s  d ng d  li u

Nguyen Ha Giang

33

ươ nhỏ

 Th

ườ ữ ư ể ng l u tr  thông tin cá nhân đ  custom cho website.

Cookie

Nguyen Ha Giang

34

Cookie

ế ậ ể  Đ  thi ộ t l p m t cookie:

ố ượ

 T o đ i t

ng

System.Net.HttpCookie

ạ ữ ệ

ỗ  T o d  li u d ng chu i

ng

ố ượ Response c a trang

 Add đ i t web hi n t

ố ượ ng cookie vào đ i t ệ ạ i

HttpCookie cookie = new HttpCookie("Account"); cookie["Username"] = “Nguyen Ha Giang"; Response.Cookies.Add(cookie);

Nguyen Ha Giang

35

Cookie

 Đ  truy c p cookie

ể ậ

ử ụ

ể ấ

 S  d ng đ i t

ố ượ Request đ  l y cookie

ng

 Ki m tra xem cookie khác null?

 Truy c p giá tr  cookie qua thu c tính key

string str = ""; HttpCookie cookie = Request.Cookies["Account"]; if (cookie != null)

str = cookie["Username"];

Nguyen Ha Giang

36

Cookie

 Cookie đ

 Persistent cookies/permanent cookie

ư

ế ạ

 L u tr  trong đĩa c ng c a client cho đ n khi h t h n, d ng

ế ạ

ượ

ứ ế ậ c thi

ế t l p ngày h t h n (expiration date)

ữ cookie này đ

 Non persistent cookie/temporary cookie

ế ạ

ữ c l u tr  trong

 Không đ nh nghĩa th i gian h t h n, cookie đ ờ ượ ư ệ ế

browser memory, k t thúc khi đóng trình duy t!

ượ ạ c phân làm 2 lo i

 Không có s  khác nhau khi s  d ng persistent và non

ử ụ ự

Nguyen Ha Giang

37

persistent cookie!

Cookie

 Khai báo Persistent cookie

HttpCookie cookie = new HttpCookie("Account"); cookie["Username"] = "Nguyen Ha Giang"; cookie["email"] = "NguyenHa.Giang@yahoo.com";

ế ạ

// khai báo th i gian h t h n cho cookie cookie.Expires = DateTime.Now.AddDays(5);

// add cookie vào response c a trang web Response.Cookies.Add(cookie);

Nguyen Ha Giang

38

Query String

ư ả ố

ữ ớ ạ  Query string không ph i là d ng state gi ng nh  session,  cookie, hay view state. Chính xác là cách chuy n thông tin  gi a trang web v i nhau.

ể ở

 Query string và view state có th  k t h p đ  g i thông tin  ớ  client đ n server mà không c n s  d ng b t c  b  nh

ể ế ợ ầ ử ụ ấ ứ ộ

ế ừ t trên server.

 Query string là ph n c a URL đ

ầ ủ ượ c thêm vào trang web,

ấ ấ ỏ sau d u ch m h i.

http://www.myweb.com?var1=Value1&Var2=Value2

Nguyen Ha Giang

39

Query String

 M t URL request nh  sau:

 http://mycompany.com/detail.aspx?id=10

 Ý nghĩa:

ư ộ

 G i id có giá tr  là 10 cho trang detail.aspx

 Đ  l y thông tin c a query string c a trang web, s  d ng

ử ụ ể ấ ủ ủ

Request.QueryString[]

string sid = Request.QueryString[“id"];

Nguyen Ha Giang

40

Query String

 Demo query string

 T o m t  ng d ng truy c p CSDL GameList g m 2 trang

ộ ứ ụ ạ ậ ồ

 GameList.aspx: hi n th  tên t

t c  các game có trong

ấ ả ạ

ế

ạ database, v i m i game t o url d ng querystring v i id c a  ẽ ở game đó, user kích vào s  m  ra trang GameDetail.aspx cho  ủ t thông tin c a game đó phép xem chi ti

ấ ả ề

 GameDetail.aspx: l y id t GameList và tr  v  chi ti

ừ  querystring, đ c CSDL  ế ấ ả t t

ọ t c  thông tin c a game.

Nguyen Ha Giang

41

Query String

ứ ả ơ ỉ

Nguyen Ha Giang

42

ụ ả  Database GameList đ n gi n ch  có b ng DanhMuc: ch a  danh m c các game online.

Query String

 T o trang GameList.aspx

ẽ ể

 Trang này có control là label s  hi n th  danh sách các tên

game.

Label: có id là “lblGameList”

Nguyen Ha Giang

43

Query String

 Ph n x  lý truy c p database

ầ ử ậ ở trang GameList.aspx

ế ố

ử ụ

 L u ý: code k t n i database này s  d ng SQL Server 2005

ư ả b n express.

GameList.aspx

protected void Page_Load(object sender, EventArgs e) {             if ( !IsPostBack )  {                 string sConn = @"server=.\SQLEXPRESS;

database=GameList; Trusted_connection=true";

ạ ố ượ

ế ố ng k t n i

ấ ấ

ả ề ố ượ

SqlConnection cnn = new SqlConnection(sConn); // t o đ i t                 try { ở ế ố                     cnn.Open(); // m  k t n i                     string query = "select ID,TenGame from DanhMuc"; // truy v n l y ds game                     SqlCommand cmd = new SqlCommand(query, cnn);                     SqlDataReader reader;                     reader = cmd.ExecuteReader(); // th c thi câu truy v n tr  v  đ i t

ng reader

ế //… ph n ti p qua slide

Nguyen Ha Giang

44

Query String

ế

ướ c

// .. Ph n ti p theo c a silde tr string str;

ế

ế

ế

ư

T o hyperlink g i trang  ử ụ GameDetail.aspx s  d ng query string  ủ ch a id c a game

ị ế

i

if (reader.HasRows)  { // n u truy v n có k t qu ộ                         lblGameList.Text = ""; // xóa n i dung label ệ                         while (reader.Read())     { // duy t qua t ng k t qu                             str = string.Format("{1} ",                                 reader["id"], reader["TenGame"]);                             lblGameList.Text += str; // đ a vào label                         }                     }                     reader.Close();                      cnn.Close();                 }                 catch (Exception ex)  {                     Response.Write(ex.Message); // hi n th  n u có l                 }

} // end if (!IsPostBack) } // end method Page_Load

Nguyen Ha Giang

45

Query String

 Trang GameList.aspx khi th c thi

Danh sách các tên game  ấ l y trong database

ế ủ

ế

Hyperlink xem chi ti

t c a “Thu n Thiên Ki m”

Nguyen Ha Giang

46

Query String

 T o trang GameDetail.aspx

ế ủ

 Trang này có 4 label ch a các thông tin chi ti

t c a game:

 Tên game: lblTenGame, nhà s n xu t: lblNSX, nhà phát hành:  ả

ể ạ lblNPH, th  lo i: lblTheLoai

GameDetail.aspx

Nguyen Ha Giang

47

Query String

 Ph n x  lý c a GameDetail.aspx

ầ ử ủ

i hay không

protected void Page_Load(object sender, EventArgs e)  {             // l y query string ố             string sid = Request.QueryString["id"]; // tham s  “id” ồ ạ             if (sid != null) // ki m tra xem tham s  này có t n t             {                 // truy cap database de lay du lieu                 string sConn = @"server=.\sqlexpress;

database=gamelist; trusted_connection=true";

ạ ố ượ

ế ố ng k t n i

SqlConnection conn = new SqlConnection(sConn); // t o đ i t                 try { ở ế ố                     conn.Open(); // m  k t n i                     string query = string.Format("select * from DanhMuc where ID={0}",sid);                     SqlCommand cmd = new SqlCommand(query, conn);                     SqlDataReader reader;                     reader = cmd.ExecuteReader(); // th c thi câu truy v n

ế

ế

// ph n ti p theo trong slide k …

Nguyen Ha Giang

48

Query String

ế

ướ c ế

ữ ệ

// ti p theo c a silde tr if (reader.HasRows) // n u có d  li u

ữ ệ

i

{ ọ                         reader.Read(); // đ c 1 dòng d  li u                         lblTenGame.Text = reader["TenGame"].ToString();                         lblNSX.Text = reader["NhaSanXuat"].ToString();                         lblNPH.Text = reader["NhaPhatHanh"].ToString();                         lblTheLoai.Text = reader["TheLoai"].ToString();                     } ế ố                     reader.Close(); conn.Close(); // đóng k t n i                 }                 catch (Exception ex)                 {                     Response.Write(ex.Message); // hi n th  thông báo l                 }             } // end if (sid !=null) } // end method Page_Load

Nguyen Ha Giang

49

Query String

ạ  Ch y demo

id = 5 là mã game C  Long

Nguyen Ha Giang

50

Cross­page Postback

 Cross page postback là d ng postback g i t

ở ớ ạ i trang khác

ư  Các button control nh  Button, ImageButton và  ộ ề LinkButton đ u có thu c tính PostBackUrl

 Đ  s  d ng Cross­page postback

ể ử ụ

ế ậ

ế

 Thi

t l p PostBackUrl cho web form c n chuy n đ n

 Khi user click vào button

ẽ ượ ở ớ

ớ ớ ấ ả

ị ủ

 Page s  đ

i URL m i v i t

t c  các giá tr  c a các

c g i t control trong trang aspx hi n th i.

Nguyen Ha Giang

51

Cross­page Postback

 Trang cross page có th  truy c p trang tr

ậ ướ c thông qua

ộ thu c tính ể PreviousPage

protected void Page_Load(object sender, EventArgs e) {     if (PreviousPage != null)     {         lblInfo.Text = "You came from " +           PreviousPage.Header.Title;     } }

Nguyen Ha Giang

52

Cross­page Postback

 Đ  truy c p chi ti

ể ế ơ ị ủ t h n, các giá tr  c a control trên form,

ế ớ

ậ ầ ả thì c n ph i gán tham chi u PreviousPage cho l p page  ươ ứ ng  ng! t

 Ta có th  add thu c tính (public) vào trang ngu n và đ c

ồ ọ

ộ ể  trang đích. chúng  if (PreviousPage != null) {     SourcePage prevPage = PreviousPage as SourcePage;     if (prevPage != null)     {         lblInfo.Text = "Welcome" + prevPage.NameEntry;     } }  ớ ủ

ủ ớ Thu c tính c a l p SourcePage

Tên l p c a trang source

Nguyen Ha Giang

53

Cross­page Postback

 Minh h a cross­page Postback

 T o 2 trang

 SourcePage.aspx: ch a form nh p thông tin user

 TargetPage.aspx: l y thông tin t

user t

SourcePage và

hi n th  lên trình duy t.

SourcePage.aspx

Nguyen Ha Giang

54

Cross­page Postback

 Mô t

Id control

Ki u control

ộ Thu c tính

ễ Di n gi

i

txtUsername

TextBox

Nh p tên user

txtEmail

TextBox

Nh p đ a ch  email

txtCompany

TextBox

Nh p tên công ty

btnPostInfo

Button

PostBackUrl =  ~/TargetPage.aspx

Button th c thi  thao tác Cross  Page Postback

Nguyen Ha Giang

55

ả ủ control c a trang SourcePage.aspx

Cross­page Postback

 Khai báo thu c tính PostBackUrl cho button btnPostInfo

Khai báo URL cho PostBackUrl

Nguyen Ha Giang

56

Cross­page Postback

 Mô t

ả trang TargetPage.aspx

 L y thông tin t

ệ  SourcePage.aspx và hi n th  ra trình duy t

TargetPage.aspx

Id control

Ki u control

ộ Thu c tính

ễ Di n gi

i

lblUsername

Label

­

ị Hi n th  tên user

lblEmail

Label

­

ị Hi n th  email

lblCompany

Label

­

ị Hi n th  công ty

Nguyen Ha Giang

57

Cross­page Postback

 Ph n x  lý c a TargetPage l y thông tin t

previous page

ầ ử ấ ừ

SourcePage là class page  ủ c a SourcePage.aspx

ố ượ

ế

ế

ế ng source tham chi u đ n previous page

// l y các control c a previous page (SourcePage.aspx)                 TextBox username = (TextBox) source.FindControl("txtUsername");                 TextBox email = (TextBox) source.FindControl("txtEmail");                 TextBox company = (TextBox)source.FindControl("txtCompany");

ủ SourcPage.aspx protected void Page_Load(object sender, EventArgs e)     { ấ             // l y thông tin t             if (PreviousPage != null)    {                 // bi n đ i t                 SourcePage source = PreviousPage as SourcePage;

ID c a control trong SourcePage.aspx

// gán thông tin cho các label                 lblUsername.Text = username.Text;                 lblEmail.Text = email.Text;                 lblCompany.Text = company.Text;             } // end if } // end method Page_Load

Nguyen Ha Giang

58

Cross­page Postback

click

Nguyen Ha Giang

59

ạ  Ch y demo