■บทที่ 10 การควบคุมข้อมูลที่หลากหลาย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 385
GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 386
การกำหนดคอลัมน์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 386
การจัดรูปแบบ GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 390
การจัดรูปแบบฟิลด์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 390
สไตล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 392
ค่าเฉพาะการจัดรูปแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 395
การเลือกแถว GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 397
การใช้การเลือกเพื่อสร้างแบบฟอร์มรายละเอียดหลัก - - - - - - - - - - - - - - - - - - - 398
เหตุการณ์ SelectedIndexChanged - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 400
การใช้เขตข้อมูลเป็นปุ่มเลือก - - - - - - - - - - - - - - - - - - - - - - - - - - - - 401
การเรียงลำดับ GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 401
การเรียงลำดับด้วย SqlDataSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 402
การเรียงลำดับด้วย ObjectDataSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 402
การเรียงลำดับและการเลือก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404
การเรียงลำดับขั้นสูง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 405
xiv ■เนื้อหา
การเพจ GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406
เพจจิ้งอัตโนมัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 407
การแบ่งหน้าแบบกำหนดเองด้วย ObjectDataSource - - - - - - - - - - - - - - - - - - - - - 408
การปรับแต่งแถบเพจเจอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 411
เทมเพลต GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 412
การใช้เทมเพลตหลายแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 414
การแก้ไขเทมเพลตใน Visual Studio . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 415
การผูกมัดกับวิธีการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 416
การจัดการเหตุการณ์ในเทมเพลต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 417
การแก้ไขด้วยเทมเพลต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418
รายการวิว - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 423
การจัดกลุ่ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426
เพจจิ้ง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 428
DetailView และ FormView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429
รายละเอียด View - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429
ฟอร์มวิว - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 432
กริดขั้นสูง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 433
สรุปใน GridView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 434
มุมมองหลัก/รองในตารางเดียว - - - - - - - - - - - - - - - - - - - - - - - - - - - - 435
การแก้ไขฟิลด์โดยใช้ตารางค้นหา - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 438
การแสดงภาพจากฐานข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 440
การตรวจจับความขัดแย้งที่เกิดขึ้นพร้อมกัน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 445
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 450
■บทที่ 11 การแคชและเพจแบบอะซิงโครนัส - - - - - - - - - - - - - - - - - - - - - - - - - - - 451
ทำความเข้าใจกับการแคช ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 451
การแคชเอาต์พุต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 452
การแคชเอาต์พุตที่ประกาศ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 452
การแคชและสตริงการสืบค้น - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 453
การแคชด้วยพารามิเตอร์สตริงการสืบค้นเฉพาะ - - - - - - - - - - - - - - - - - - - - 454
การควบคุมแคชแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 455
การแคชด้วย HttpCachePolicy Class - - - - - - - - - - - - - - - - - - - - - - - - - - 456
การทดแทนหลังแคชและการแคชแฟรกเมนต์ - - - - - - - - - - - - - - - - - - - 457
โปรไฟล์แคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 459
การกำหนดค่าแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 460
การแคชข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 461
การเพิ่มรายการลงในแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 462
การทดสอบแคชอย่างง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 464
ลำดับความสำคัญของแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 465
การแคชด้วยการควบคุมแหล่งข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - 466
การพึ่งพาแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 469
การขึ้นต่อกันของรายการไฟล์และแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 469
การพึ่งพาแบบรวม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 470
■เนื้อหา xv
รายการที่ถูกลบการติดต่อกลับ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 471
ทำความเข้าใจกับการแจ้งเตือน SQL Cache - - - - - - - - - - - - - - - - - - - - - - - - - - 473
การแจ้งเตือนแคชใน SQL Server 2000 และ SQL Server 7 - - - - - - - - - - - 474
การแจ้งเตือนแคชใน SQL Server 2005 และ SQL Server 2008 - - - - - - - 479
การพึ่งพาแคชแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 481
การพึ่งพาแคชแบบกำหนดเองขั้นพื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 482
การพึ่งพาแคชแบบกำหนดเองโดยใช้คิวข้อความ - - - - - - - - - - - - - - 483
หน้าอะซิงโครนัส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 485
การสร้างเพจแบบอะซิงโครนัส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 486
การสืบค้นข้อมูลในหน้าอะซิงโครนัส - - - - - - - - - - - - - - - - - - - - - - - - - - 488
การจัดการกับข้อผิดพลาด - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 490
การใช้แคชกับงานแบบอะซิงโครนัส - - - - - - - - - - - - - - - - - - - - - - - - - 492
งานอะซิงโครนัสหลายงานและการหมดเวลา - - - - - - - - - - - - - - - - - - - - - - - 495
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 496
■บทที่ 12 ไฟล์และสตรีม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 497
การทำงานกับระบบไฟล์ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 497
ไดเร็กทอรีและคลาสไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 498
คลาส DirectoryInfo และ FileInfo - - - - - - - - - - - - - - - - - - - - - - - - - - - - 500
คลาส DriveInfo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 503
การทำงานกับคุณสมบัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 504
กรองไฟล์ด้วย Wildcards - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 506
การดึงข้อมูลเวอร์ชันของไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 506
คลาสเส้นทาง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 507
เบราว์เซอร์ไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 510
การอ่านและการเขียนไฟล์ด้วยสตรีม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 514
ไฟล์ข้อความ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 516
ไฟล์ไบนารี . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 517
การอัพโหลดไฟล์ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 518
ทำให้ไฟล์ปลอดภัยสำหรับผู้ใช้หลายคน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 520
การบีบอัด - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 525
การทำให้เป็นอนุกรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 526
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 529
■บทที่ 13 ลิงค์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 531
พื้นฐาน LINQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 531
การดำเนินการเลื่อนออกไป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 533
LINQ ทำงานอย่างไร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 534
นิพจน์ LINQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 534
นิพจน์ LINQ “ภายใต้ประทุน” - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 541
LINQ ไปยังชุดข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 544
ชุดข้อมูลที่พิมพ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 546
ค่าว่าง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 547
xvi ■เนื้อหา
LINQ เป็น SQL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 547
คลาสเอนทิตีข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 548
ดาต้าคอนเท็กซ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 550
แบบสอบถาม LINQ ถึง SQL “ภายใต้ประทุน” - - - - - - - - - - - - - - - - - - - - - - - - - - - 551
LINQ ถึง SQL และส่วนประกอบฐานข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - 554
การเลือกเรกคอร์ดหรือค่าเดียว - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 556
การสร้างคลาสข้อมูลโดยอัตโนมัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - 557
ความสัมพันธ์. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 563
การสร้างวิธีการสำหรับขั้นตอนการจัดเก็บ - - - - - - - - - - - - - - - - - - - - - - - - 571
กระทำการเปลี่ยนแปลง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 573
LinqDataSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 578
การแสดงข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 579
การรับข้อมูลที่เกี่ยวข้อง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 582
การแก้ไขข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 583
การตรวจสอบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 583
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 586
■บทที่ 14 XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 587
การใช้ XML สมเหตุสมผลเมื่อใด - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 587
บทนำสู่ XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 588
ข้อดีของเอ็กซ์เอ็มแอล . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 589
XML ที่มีรูปแบบดี - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 590
เนมสเปซ XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 590
XML Schema - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 592
การประมวลผล XML แบบสตรีม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 594
การเขียนไฟล์ XML . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 594
การอ่านไฟล์ XML . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 597
การประมวลผล XML ในหน่วยความจำ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 600
เอกสาร Xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 601
XPathNavigator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 605
XDocument. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 607
ค้นหาเนื้อหา XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 612
ค้นหาด้วย XmlDocument - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 612
ค้นหา XmlDocument ด้วย XPath - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 615
ค้นหา XDocument ด้วย LINQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617
การตรวจสอบความถูกต้องของเนื้อหา XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 619
สคีมาพื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 619
การตรวจสอบความถูกต้องด้วย XmlDocument - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 619
กำลังตรวจสอบกับ XDocument - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621
การแปลงเนื้อหา XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622
สไตล์ชีตพื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622
การใช้ XslCompiledTransform - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 623
■เนื้อหา xvii
การใช้ตัวควบคุม XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625
การแปลง XML ด้วย LINQ เป็น XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625
การเชื่อมโยงข้อมูล XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 627
การผูกแบบไม่มีลำดับชั้น - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 627
การใช้ XPath - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 629
กริดที่ซ้อนกัน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 632
การเชื่อมโยงแบบลำดับชั้นกับ TreeView - - - - - - - - - - - - - - - - - - - - - - - - - - - 633
การใช้ XSLT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 635
การเชื่อมโยงเนื้อหา XML จากแหล่งอื่น - - - - - - - - - - - - - - - - - - - - - - - 637
การอัพเดต XML ผ่าน XmlDataSource - - - - - - - - - - - - - - - - - - - - - - - 637
XML และชุดข้อมูล ADO.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 638
การแปลงชุดข้อมูลเป็น XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639
การเข้าถึงชุดข้อมูลเป็น XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 640
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 642
ส่วนที่ 3 ■ ■ ■ การสร้างเว็บไซต์ ASP.NET
■บทที่ 15 การควบคุมผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645
พื้นฐานการควบคุมผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645
การสร้างการควบคุมผู้ใช้อย่างง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646
การแปลงเพจเป็นการควบคุมผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 647
การเพิ่มรหัสให้กับการควบคุมผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648
จัดการเหตุการณ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648
การเพิ่มคุณสมบัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649
การใช้ออบเจ็กต์แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 651
การเพิ่มกิจกรรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 654
การเปิดเผยการควบคุมเว็บภายใน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 657
กำลังโหลดการควบคุมผู้ใช้แบบไดนามิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 657
กรอบพอร์ทัล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 658
การแคชหน้าบางส่วน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 661
VaryByControl. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 662
การแชร์การควบคุมแคช - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 663
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 663
■บทที่ 16 ธีมและมาสเตอร์เพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665
สไตล์ชีทแบบเรียงซ้อน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665
การสร้างสไตล์ชีท - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665
การใช้กฎสไตล์ชีต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 668
xviii ■เนื้อหา
ธีมส์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 670
โฟลเดอร์และสกินของธีม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 671
การใช้ธีมเรียบง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672
การจัดการความขัดแย้งของธีม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 673
การสร้างหลายสกินสำหรับการควบคุมเดียวกัน - - - - - - - - - - - - - - - - - - - - - - 674
สกินพร้อมเทมเพลตและรูปภาพ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 675
การใช้ CSS ในธีม . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 677
การใช้ธีมผ่านไฟล์กำหนดค่า - - - - - - - - - - - - - - - - - - - - 677
การใช้ธีมแบบไดนามิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 678
การจัดวางเว็บไซต์ให้เป็นมาตรฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680
ข้อมูลเบื้องต้นเกี่ยวกับมาสเตอร์เพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680
หน้าต้นแบบอย่างง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681
หน้าเนื้อหาที่เรียบง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 683
เนื้อหาเริ่มต้น - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 684
มาสเตอร์เพจพร้อมตารางและเค้าโครง CSS - - - - - - - - - - - - - - - - - - - - - - - - 685
มาสเตอร์เพจและเส้นทางสัมพันธ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 687
การใช้มาสเตอร์เพจผ่านไฟล์กำหนดค่า - - - - - - - - - - - - - - - - 688
มาสเตอร์เพจขั้นสูง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 689
การโต้ตอบกับคลาสมาสเตอร์เพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - 689
การตั้งค่ามาสเตอร์เพจแบบไดนามิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690
การซ้อนมาสเตอร์เพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 691
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 693
■บทที่ 17 การนำทางเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695
เพจที่มีการดูหลายรายการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695
การควบคุม MultiView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 696
การควบคุมตัวช่วยสร้าง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 700
แผนที่เว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707
การกำหนดแผนผังเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708
การผูกเข้ากับแผนผังเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 710
เกล็ดขนมปัง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 711
การแสดงส่วนหนึ่งของแผนผังเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 713
วัตถุแผนผังเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 716
การเพิ่มข้อมูลแผนที่เว็บไซต์แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 718
การสร้าง SiteMapProvider แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 718
การทำแผนที่ URL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 725
การตัดแต่งความปลอดภัย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 726
การควบคุม TreeView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 728
ทรีโหนด - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 729
การเติมโหนดตามความต้องการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 731
สไตล์ TreeView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 733
■เนื้อหา xix
การควบคุมเมนู - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 737
รูปแบบเมนู - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 740
เทมเพลตเมนู - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 741
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 743
■บทที่ 18 การใช้งานเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 745
บริการข้อมูลทางอินเทอร์เน็ต (IIS) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 745
เว็บไซต์ IIS และไดเรกทอรีเสมือน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 746
คอนโซลการจัดการ IIS และการกำหนดค่า IIS - - - - - - - - - - - - - - - - - - - - 747
การแมปเว็บไซต์ ไดเร็กทอรีเสมือน และไฟล์ไปยัง URL - - - - - - - - - - - - 748
เจาะลึกสถาปัตยกรรมของ IIS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 750
การติดตั้ง IIS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 765
การจัดการเว็บไซต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 771
การจัดการไดเรกทอรีเสมือนและเว็บไซต์ด้วย IIS 5.x และ IIS 6.0 - - - - - - 772
การจัดการพูลแอปพลิเคชันใน IIS 6.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - 778
การจัดการไดเรกทอรีเสมือนและเว็บไซต์ด้วย IIS 7.0 - - - - - - - - - - - - - - 784
การจัดการพูลแอปพลิเคชันใน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - 796
การปรับใช้แอปพลิเคชัน ASP.NET ของคุณ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 798
การตรวจสอบการติดตั้ง ASP.NET บน IIS 5.x และ IIS 6.0 - - - - - - - - - - - - - 800
การดำเนินการ ASP.NET แบบเคียงข้างกันบน IIS 5.x และ IIS 6.0 - - - - - - - - - - - - - - 801
การดำเนินการ ASP.NET แบบเคียงข้างกันบน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - 803
การกำหนดการตั้งค่ารันไทม์ HTTP เมื่อปรับใช้บน IIS 5.x - - - - - - - 803
การรวบรวมโมเดลใน ASP.NET . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 804
การปรับใช้กับ Visual Studio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 808
โครงการปรับใช้เว็บ Visual Studio 2005 - - - - - - - - - - - - - - - - - - - - - 809
VirtualPathProvider ใน ASP.NET . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 815
การตรวจสอบสุขภาพใน ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 819
ทำความเข้าใจกับโครงสร้างพื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 820
กิจกรรมและผู้ให้บริการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 820
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 823
ส่วนที่ 4 ■ ■ ■ การรักษาความปลอดภัย
■บทที่ 19 โมเดลการรักษาความปลอดภัยของ ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 827
การสร้างซอฟต์แวร์ที่ปลอดภัยหมายถึงอะไร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 827
ทำความเข้าใจกับภัยคุกคามที่อาจเกิดขึ้น - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 828
แนวทางการเข้ารหัสที่ปลอดภัย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 828
ทำความเข้าใจกับผู้รักษาประตู - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 829
การทำความเข้าใจระดับความปลอดภัย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 830
การรับรองความถูกต้อง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 831
การอนุญาต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 832
xx ■เนื้อหา
การรักษาความลับและความซื่อสัตย์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 833
ดึงมันทั้งหมดเข้าด้วยกัน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 833
ความปลอดภัยของบริการข้อมูลทางอินเทอร์เน็ต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 835
การรับรองความถูกต้องและการอนุญาตบน IIS 5.x และ IIS 6.0 - - - - - - - - - - - - - - 835
การกำหนดค่าความปลอดภัยบน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 838
ทำความเข้าใจกับ Secure Sockets Layer - - - - - - - - - - - - - - - - - - - - - - - - - - - - 843
สถาปัตยกรรมความปลอดภัย ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 852
การรับรองความถูกต้อง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 853
การอนุญาต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 855
บริบทด้านความปลอดภัย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 855
API การเป็นสมาชิกและบทบาท - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 857
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 858
■บทที่ 20 การรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 859
ขอแนะนำการรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 859
เหตุใดจึงใช้การรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 860
เหตุใดคุณจึงไม่ใช้การรับรองความถูกต้องของแบบฟอร์ม?. - - - - - - - - - - - - - - - - - - - - 862
เหตุใดจึงไม่ใช้การรับรองความถูกต้องของคุกกี้ด้วยตนเอง - - - - - - - - - - - - - - - - 863
คลาสการรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 864
การใช้การรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 865
การกำหนดค่าการรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 865
การปฏิเสธการเข้าถึงของผู้ใช้ที่ไม่ระบุชื่อ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 869
การสร้างหน้าเข้าสู่ระบบแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 869
ร้านค้าข้อมูลประจำตัวที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 876
คุกกี้ถาวรในการตรวจสอบสิทธิ์แบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - 877
IIS 7.0 และการรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 878
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 884
■บทที่ 21 การเป็นสมาชิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 885
ขอแนะนำ ASP.NET Membership API - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 885
การใช้ Membership API - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 888
การกำหนดค่าการรับรองความถูกต้องของแบบฟอร์ม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 889
การสร้างที่เก็บข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 890
การกำหนดค่าสตริงการเชื่อมต่อและผู้ให้บริการสมาชิก - - - - - - - - - - - - 896
การสร้างและรับรองผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 900
การใช้การควบคุมความปลอดภัย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 902
การควบคุมการเข้าสู่ระบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 904
การควบคุมสถานะการเข้าสู่ระบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 914
การควบคุม LoginView - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 915
การควบคุมการกู้คืนรหัสผ่าน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 916
การควบคุม ChangePassword - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 921
การควบคุม CreateUserWizard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 922
■เนื้อหา xxi
การกำหนดค่าการเป็นสมาชิกใน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 926
การกำหนดค่าผู้ให้บริการและผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 926
การใช้ Membership API กับแอปพลิเคชันอื่นๆ - - - - - - - - - - - - - - - - - 928
การใช้คลาสสมาชิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 930
การดึงผู้ใช้ออกจากร้านค้า - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 930
การอัปเดตผู้ใช้ใน Store - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 933
การสร้างและการลบผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 933
การตรวจสอบความถูกต้องของผู้ใช้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 934
การใช้การเป็นสมาชิกในรูปแบบ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - 935
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 937
■บทที่ 22 การรับรองความถูกต้องของ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 939
ขอแนะนำการรับรองความถูกต้องของ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 939
เหตุใดจึงต้องใช้การรับรองความถูกต้องของ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 940
ทำไมคุณถึงไม่ใช้การรับรองความถูกต้องของ Windows? - - - - - - - - - - - - - - - - - - 941
กลไกการรับรองความถูกต้องของ Windows - - - - - - - - - - - - - - - - - - - - - - - - - 942
การใช้การรับรองความถูกต้องของ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 948
การกำหนดค่า IIS 5.x หรือ IIS 6.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 948
การกำหนดค่า IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 950
การกำหนดค่า ASP.NET . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 952
การปฏิเสธการเข้าถึงของผู้ใช้ที่ไม่ระบุชื่อ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 955
การเข้าถึงข้อมูลผู้ใช้ Windows - - - - - - - - - - - - - - - - - - - - - - - - - - - - 957
การแอบอ้างบุคคลอื่น - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 962
การเลียนแบบใน Windows 2000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 963
การเลียนแบบใน Windows XP . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 964
การเลียนแบบและการมอบหมายบน Windows Server 2003 - - - - - - - - - - - - 964
การแอบอ้างบุคคลอื่นใน Windows Vista - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 967
การเลียนแบบและการมอบหมายบน Windows Server 2008 - - - - - - - - - - - - 968
การเลียนแบบที่กำหนดค่าไว้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 968
การแอบอ้างบุคคลอื่นโดยทางโปรแกรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 970
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 973
■บทที่ 23 การอนุญาตและบทบาท - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 975
การอนุญาต URL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 975
กฎการอนุญาต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 976
การอนุญาตไฟล์. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 981
การตรวจสอบการอนุญาตในรหัส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 982
การใช้เมธอด IsInRole() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 982
การใช้คลาส PrincipalPermission - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 983
การใช้ Roles API สำหรับการอนุญาตตามบทบาท - - - - - - - - - - - - - - - - - - - - - - - 985
การใช้การควบคุม LoginView กับบทบาท - - - - - - - - - - - - - - - - - - - - - - - - - - - 991
การเข้าถึงบทบาทโดยทางโปรแกรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 992
การใช้ Roles API กับ Windows Authentication - - - - - - - - - - - - - - - - - - 994
xxii ■เนื้อหา
การปกป้องทรัพยากรที่ไม่ใช่ ASP.NET ใน IIS 5 และ 6 - - - - - - - - - - - - - - - - - - - - - - - 997
การเพิ่มการแมปประเภทไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 997
การเขียนตัวจัดการ HTTP แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 998
การอนุญาตและบทบาทใน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,000
การอนุญาตด้วยบทบาท ASP.NET ใน IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - 1002
การจัดการบทบาท ASP.NET ด้วย IIS 7.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - 1005
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1006
■บทที่ 24 โปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1009
การทำความเข้าใจโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1009
ประสิทธิภาพของโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1009
โปรไฟล์จัดเก็บข้อมูลอย่างไร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,010
โปรไฟล์และการรับรองความถูกต้อง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1011
โปรไฟล์กับส่วนประกอบข้อมูลที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - 1011
การใช้ SqlProfileProvider - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1012
การสร้างตารางโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1012
การกำหนดค่าผู้ให้บริการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1015
การกำหนดคุณสมบัติโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1016
การใช้คุณสมบัติโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1017
การทำให้เป็นอนุกรมโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1018
กลุ่มโปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,020
โปรไฟล์และประเภทข้อมูลที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,021
API โปรไฟล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,024
โปรไฟล์ที่ไม่ระบุชื่อ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,026
ผู้ให้บริการโปรไฟล์ที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,029
คลาสผู้ให้บริการโปรไฟล์แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,029
การออกแบบ FactoredProfileProvider - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,031
การเข้ารหัส FactoredProfileProvider - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,033
การทดสอบ FactoredProfileProvider - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,037
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,040
■บทที่ 25 การเข้ารหัส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,041
การเข้ารหัสข้อมูล: เรื่องการรักษาความลับ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,041
เนมสเปซการเข้ารหัส. NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,042
ทำความเข้าใจเกี่ยวกับคลาสการเข้ารหัส .NET - - - - - - - - - - - - - - - - - - - - - - - - - 1,046
อัลกอริธึมการเข้ารหัสแบบสมมาตร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,047
การเข้ารหัสแบบอสมมาตร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,048
คลาสการเข้ารหัสเชิงนามธรรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,049
อินเทอร์เฟซ ICryptoTransform - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,050
คลาส CryptoStream - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,050
■เนื้อหาที่ xxiii
การเข้ารหัสข้อมูลที่ละเอียดอ่อน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,051
การจัดการความลับ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,052
การใช้อัลกอริทึมแบบสมมาตร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,053
การใช้อัลกอริทึมแบบอสมมาตร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,058
การเข้ารหัสข้อมูลที่ละเอียดอ่อนในฐานข้อมูล - - - - - - - - - - - - - - - - - - - - - - - - - 1,061
การเข้ารหัสสตริงแบบสอบถาม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,065
การตัดสตริงแบบสอบถาม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,066
การสร้างหน้าทดสอบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,069
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,070
■บทที่ 26 ผู้ให้บริการสมาชิกแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,071
สถาปัตยกรรมของผู้ให้บริการแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,071
ขั้นตอนพื้นฐานสำหรับการสร้างผู้ให้บริการแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1,073
การออกแบบโดยรวมของผู้ให้บริการแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - 1,073
การออกแบบและการใช้งาน Custom Store - - - - - - - - - - - - - - - - - - - 1,074
การใช้คลาสผู้ให้บริการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1082
การใช้คลาสผู้ให้บริการแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1102
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1106
ส่วนที่ 5 ■ ■ ■ ส่วนติดต่อผู้ใช้ขั้นสูง
■บทที่ 27 การควบคุมเซิร์ฟเวอร์แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1109
พื้นฐานการควบคุมเซิร์ฟเวอร์แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1109
การสร้างการควบคุมแบบกำหนดเอง Bare-Bones - - - - - - - - - - - - - - - - - - - - - - - - - - 1110
การใช้การควบคุมแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1112
การควบคุมแบบกำหนดเองในกล่องเครื่องมือ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1113
การสร้างการควบคุมเว็บที่รองรับคุณสมบัติสไตล์ - - - - - - - - - - - - - 1114
กระบวนการเรนเดอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1118
การจัดการกับเบราว์เซอร์ที่แตกต่างกัน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1119
HtmlTextWriter . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1119
การตรวจจับเบราว์เซอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1120
คุณสมบัติเบราว์เซอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1122
การเอาชนะการตรวจจับประเภทเบราว์เซอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1124
การแสดงผลแบบปรับเปลี่ยนได้ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1125
สถานะการควบคุมและเหตุการณ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1127
ดูสถานะ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1127
สถานะการควบคุม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1129
ข้อมูล Postback และเหตุการณ์การเปลี่ยนแปลง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1131
ทริกเกอร์ Postback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1133
การขยายการควบคุมเว็บที่มีอยู่ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1135
การควบคุมแบบคอมโพสิต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1135
สิ้นสุดการควบคุมที่ได้รับจากแถบด้านข้าง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1138
xxiv ■เนื้อหา
การควบคุมเทมเพลต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1141
การสร้างตัวควบคุมเทมเพลต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1141
การใช้เทมเพลตที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1143
สไตล์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1148
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1150
■บทที่ 28 การสนับสนุนเวลาออกแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1151
ผู้เล่นคนสำคัญ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1151
คุณลักษณะเวลาออกแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1152
หน้าต่างคุณสมบัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1153
คุณสมบัติและมรดก. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1157
ไอคอนกล่องเครื่องมือ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1158
แหล่งข้อมูลบนเว็บ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1159
การสร้างทรัพยากร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1159
การเรียกค้นทรัพยากร - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1160
การทดแทนข้อความ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1161
การทำให้เป็นอนุกรมรหัส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1162
ประเภทตัวแปลง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1162
คุณสมบัติการทำให้เป็นอนุกรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1170
พิมพ์บรรณาธิการ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1172
ผู้ควบคุมการออกแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1174
HTML เวลาออกแบบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1175
สมาร์ทแท็ก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1177
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1182
■บทที่ 29 กราฟิกแบบไดนามิกและ GDI+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1183
การควบคุม ImageMap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1183
การสร้างฮอตสปอต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1184
การจัดการการคลิกฮอตสปอต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1185
ฮอตสปอตที่กำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1186
การวาดภาพด้วย GDI+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1188
การวาดภาพอย่างง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1189
รูปแบบภาพและคุณภาพของภาพ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1191
คลาสกราฟิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1192
การใช้เส้นทางกราฟิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1194
ปากกา . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1195
แปรง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1198
การฝังกราฟิกแบบไดนามิกในเว็บเพจ - - - - - - - - - - - - - - - - - - - - - - - - - 1199
การใช้รูปแบบ PNG - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1200
การส่งข้อมูลไปยังรูปภาพไดนามิก - - - - - - - - - - - - - - - - - - - - - - - - - 1201
การควบคุมแบบกำหนดเองที่ใช้ GDI+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1204
การสร้างกราฟด้วย GDI+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1208
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1213
■เนื้อหา xxv
■บทที่ 30 พอร์ทัลพร้อมหน้า Web Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1215
หน้าพอร์ทัลทั่วไป - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1216
หน้า Web Part พื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1217
การสร้างการออกแบบเพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1218
การควบคุม WebPartManager และ WebPartZone - - - - - - - - - - - - - - - - - - - - - 1219
การเพิ่ม Web Part ลงในเพจ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1221
การปรับแต่งหน้า. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1224
การสร้าง Web Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1226
งาน Web Part อย่างง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1227
การพัฒนา Web Part ขั้นสูง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1235
ตัวแก้ไข Web Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1244
การเชื่อมต่อ Web Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1250
กริยาและ Web Part แบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1258
การควบคุมผู้ใช้และ Web Part ขั้นสูง - - - - - - - - - - - - - - - - - - - - - - - - - - 1259
การอัปโหลด Web Part แบบไดนามิก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1262
การอนุญาต Web Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1268
งานสุดท้ายสำหรับการปรับแต่งส่วนบุคคล - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1268
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1269
ตอนที่ 6 ■ ■ ■ การเขียนโปรแกรมฝั่งไคลเอ็นต์
■บทที่ 31 เทคนิค JavaScript และ Ajax - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1273
สิ่งจำเป็นสำหรับจาวาสคริปต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1273
โมเดลออบเจ็กต์เอกสาร HTML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1274
เหตุการณ์ฝั่งไคลเอ็นต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1275
บล็อกสคริปต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1277
การจัดการองค์ประกอบ HTML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1279
การดีบัก JavaScript - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1280
ตัวอย่าง JavaScript พื้นฐาน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1282
การสร้างตัวประมวลผลหน้า JavaScript - - - - - - - - - - - - - - - - - - - - - - - - - - - 1282
การใช้ JavaScript เพื่อดาวน์โหลดรูปภาพแบบอะซิงโครนัส - - - - - - - - - - - - - 1285
การเรนเดอร์สคริปต์บล็อก - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1290
การโจมตีแบบฉีดสคริปต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1291
ขอการตรวจสอบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1291
ปิดการใช้งานการตรวจสอบคำขอ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1292
การควบคุมแบบกำหนดเองด้วย JavaScript - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1294
หน้าต่างป๊อปอัพ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1294
ปุ่มแบบโรลโอเวอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1298
เฟรม. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1301
การนำทางด้วยเฟรม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1302
เฟรมอินไลน์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1303
xxvi ■เนื้อหา
ทำความเข้าใจกับอาแจ็กซ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1304
วัตถุ XMLHttpRequest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1305
ตัวอย่างอาแจ็กซ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1307
การใช้ Ajax กับการเรียกกลับของลูกค้า - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1311
การสร้างการติดต่อกลับของลูกค้า - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1311
ลูกค้าโทรกลับ "ภายใต้ประทุน" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1317
การเรียกกลับของลูกค้าในการควบคุมแบบกำหนดเอง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1318
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1322
■บทที่ 32 ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1323
ขอแนะนำ ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1323
ASP.NET AJAX บนไคลเอนต์: ไลบรารีสคริปต์ - - - - - - - - - - - - - - - - - 1325
ASP.NET AJAX บนเซิร์ฟเวอร์: The ScriptManager . - - - - - - - - - - - - - - - - - 1325
การเรียกกลับของเซิร์ฟเวอร์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1326
บริการเว็บใน ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1327
พร็อกซีบริการเว็บ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1334
การวางวิธีการเว็บในหน้า - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1336
บริการแอปพลิเคชัน ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1337
การควบคุมเซิร์ฟเวอร์ ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1344
การเรนเดอร์บางส่วนด้วย UpdatePanel - - - - - - - - - - - - - - - - - - - - - - - - - - 1344
รีเฟรชตามเวลาด้วยตัวจับเวลา - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1351
การอัพเดตที่ใช้เวลานานด้วย UpdateProgress - - - - - - - - - - - - - - - - - - - 1352
เจาะลึกเข้าไปในไลบรารีไคลเอนต์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1355
ทำความเข้าใจกับโมเดลลูกค้า - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1356
การเขียนโปรแกรมเชิงวัตถุใน JavaScript - - - - - - - - - - - - - - - - - - - - - - 1357
กรอบหน้าเว็บ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1364
ส่วนต่อขยายการควบคุม - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1369
การติดตั้งชุดเครื่องมือควบคุม ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - 1370
ตัวขยายการทำให้สมบูรณ์อัตโนมัติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1371
ชุดเครื่องมือควบคุม ASP.NET AJAX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1374
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1378
■บทที่ 33 แสงเงิน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1379
ทำความเข้าใจกับซิลเวอร์ไลท์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1379
Silverlight กับ Flash . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1380
การยอมรับ Silverlight - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1382
ซิลเวอร์ไลท์ และ WPF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1382
การติดตั้ง Silverlight และ Visual Studio Extensions - - - - - - - - - - - - - - 1383
การสร้างโครงการ Silverlight - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1384
หน้ารายการ HTML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1385
สคริปต์การเริ่มต้น Silverlight - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1386
หน้า XAML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1388
รหัส XAML-Behind - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1391
■เนื้อหา xxvii
คุณสมบัติและเหตุการณ์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1392
การรวบรวม Silverlight. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1393
สิ่งจำเป็นของซิลเวอร์ไลท์ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1394
คลาส .NET Framework ใน Silverlight . - - - - - - - - - - - - - - - - - - - - - - - - - - 1395
ผ้าใบ. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1396
ข้อความ . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1401
การโต้ตอบกับ HTML . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1402
พื้นที่เก็บข้อมูลแบบแยกส่วน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1406
ซิลเวอร์ไลท์ และ ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1408
ฟิวเจอร์ส ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1408
การสื่อสารระหว่าง Silverlight และ ASP.NET - - - - - - - - - - - - - - - - - 1412
การวาดภาพในแบบ 2 มิติ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1412
รูปร่างที่เรียบง่าย - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1413
เส้นทางและเรขาคณิต - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1417
แปรง - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1425
ความโปร่งใส - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1427
แอนิเมชั่น. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1429
พื้นฐานแอนิเมชัน - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1430
การกำหนดภาพเคลื่อนไหว - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1430
ตัวอย่างภาพเคลื่อนไหวแบบโต้ตอบ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1434
แปลงร่าง. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1437
สรุป . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1440
■ดัชนี - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1441
ขยาย