ASP.NET 3.5
סדנת לימוד
בשפות C#וVB-
קרא בהקדמה על קבצי קוד המקור
צבי אלרואי:תרגום
שרה עמיהוד:עריכה לשונית ועיצוב
שרון רז:עיצוב עטיפה
תודה ליצחק עמיהוד ולמאיר קרודו על הייעוץ המקצועי
שמות מסחריים
הוצאת.שמות המוצרים והשירותים המוזכרים בספר הינם שמות מסחריים רשומים של החברות שלהם
עשו כמיטב יכולתן למסור מידע אודות השמות המסחריים המוזכריםWrox - וWiley עמי והוצאות- הוד
registered ) שמות מסחריים רשומים. המוצרים והשירותים, בספר זה ולציין את שמות החברות
.( המוזכרים בספר צוינו בהתאמהtrademarks
הודעה
נעשו מאמצים רבים לגרום לכך שהספר יהיה שלם ואמין.ספר זה מיועד לתת מידע אודות מוצרים שונים
. אך אין משתמעת מכך כל אחריות שהיא,ככל שניתן
אינן אחראיות כלפי יחיד אוWrox - וWiley עמי והוצאות- הוצאת הוד.("as is") "המידע ניתן "כמות שהוא
או מהקבצים שבאתר )או, מהמידע שבספר זה, אם ייגרם,ארגון עבור כל אובדן או נזק אשר ייגרם
.(קבצי מחשב שעשויים להיות מצורפים לו/דיסקט/מתקליטור
Limit of Liability/Disclaimer of Warranty: The publisher and the author make no
representations or warranties with respect to the accuracy or completeness of the
contents of this work and specifically disclaim all warranties, including without
limitation warranties of fitness for a particular purpose. No warranty may be created
or extended by sales or promotional materials. The advice and strategies contained
herein may not be suitable for every situation. This work is sold with the
understanding that the publisher is not engaged in rendering legal, accounting, or
other professional services. If professional assistance is required, the services of a
competent professional person should be sought. Neither the publisher nor the
author shall be liable for damages arising herefrom. The fact that an organization or
Website is referred to in this work as a citation and/or a potential source of further
information does not mean that the author or the publisher endorses the information
the organization or Website may provide or recommendations it may make. Further,
readers should be aware that Internet Websites listed in this work may have
changed or disappeared between when this work was written and when it is read.
ספר זה מיועד לגברים ונשים.לשם שטף הקריאה כתוב ספר זה בלשון זכר בלבד
.ות/כאחד ואין בכוונתנו להפלות או לפגוע בציבור המשתמשים
ASP.NET 3.5
סדנת לימוד
בשפות C#וVB-
Imar Spaanjaars
ייעוץ מקצועי :מאיר קרודו
[email protected]
Beginning ASP.NET 3.5: In C# and VB
By
Imar Spaanjaars
Copyright © 2008 by Wiley Publishing, Indianapolis, Indiana.
ISBN 978-0-470-18759-3
This Hebrew translation published under license by John Wiley & Sons, Inc.
Copyright: All Rights Reserved. No part of this publication may be reproduced,
stored in a retrieval system or transmitted in any form or by any means, electronic,
mechanical, photocopying, recording, scanning or otherwise, except as permitted
under Sections 107 or 108 of the 1976 United States Copyright Act, without either
the prior written permission of the Publisher, or authorization through payment of the
appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive,
Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher
for permission should be addressed to the Legal Department, Wiley Publishing, Inc.,
10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 5724355, or online at http://www.wiley.com/go/permissions
The Wiley Brand trade dress is a trademark of Wiley Publishing, Inc. in the United
States and/or other countries. Used by permission: The WROX Brand trade dress is
a trademark of Wrox, Inc. in the United States and/or other countries. Used by
permission.
עמי בע"מ-הוצאת הוד
www.hod-ami.co.il
©
כל הזכויות שמורות
[email protected]
או לאחסן/ לקלוט ו, לשדר, להקליט, לתרגם, לצלם, לשכפל,או להעתיק/אין לעשות שימוש מסחרי ו
או/או אחר – בחלק כלשהו מן המידע ו/ מגנטי ו, אופטי, דיגיטלי,או אמצעי מכני/במאגר מידע בכל דרך ו
כל שימוש החורג.או שצורפו לספר זה/או כל תוכן אחר הכלולים ו/או התוכניות ו/או האיורים ו/התמונות ו
אלא ברשות מפורשת בכתב,מציטוט קטעים קצרים במסגרת של ביקורת ספרותית אסור בהחלט
. הוראות אלו משלימות את הוראות הזכויות באנגלית לעיל.מהמוציא לאור
הודפס בישראל
10/2009 מהדורה ראשונה
ISBN 978-965-361-400-0 מסת"ב
תוכן עניינים מקוצר
הקדמה xxi ...........................................................................................
פרק ASP.NET 3.5 :1מתחילים 1 ..........................................................
פרק :2בניית אתר אינטרנט בסביבת 34 .................................ASP.NET
פרק :3עיצוב דפי האינטרנט שלך 66 .....................................................
פרק :4עבודה עם פקדי 107 .................................................. ASP.NET
פרק :5תכנות דפי Webב141 .............................................. ASP.NET-
פרק :6יצירת אתרי Webבעלי מראה עקבי 203 ......................................
פרק :7ניווט באתר 248 ........................................................................
פרק :8פקדי משתמש 282 ....................................................................
פרק :9בדיקת אימות הקלט מהמשתמש 308 .........................................
פרק 340 .............................................................. ASP.NET AJAX :10
פרק :11מבוא לבסיסי נתונים 373 .........................................................
פרק :12הצגה ועדכון של נתונים405 .....................................................
פרק 450 .............................................................................. LINQ :13
פרק :14הצגת נתונים -נושאים מתקדמים 501 ......................................
פרק :15אבטחת אתר אינטרנט בסביבת 545 ....................ASP.NET 3.5
פרק :16התאמה אישית של אתרי אינטרנט 588 .....................................
פרק :17טיפול בחריגים ,ניפוי ומעקב
)624 ............(Exception Handling, Debugging, and Tracing
פרק :18פריסת אתר אינטרנט )666 ............ (Deploying Your Web Site
תוכן עניינים v
נספח א' :תשובות לתרגילים 703 ...........................................................
נספח ב' :קביעת התצורה של 724 ..................... SQL Server 2005/2008
נספח ג' :תכונות חדשות )744 ....................................................... (SP1
נספח ד'747 ..................................................................... Silverlight :
אינדקס 759 .........................................................................................
viסדנת לימוד ASP.NET 3.5
תוכן עניינים
הקדמה xxi ...........................................................................................
למי מיועד ספר זה xxii .....................................................................................................
במה עוסק הספר xxii .......................................................................................................
מבנה הספר xxvi .............................................................................................................
מה נדרש כדי להשתמש בספרxxvi ....................................................................................
מוסכמות xxvi .................................................................................................................
קוד מקור xxviii ...............................................................................................................
טעויות דפוס או קוד xxix ...................................................................................................
xxx........................................................................................................ p2p.Wrox.com
xxx........................................................................................................................ SP1
על המחבר xxxi ..............................................................................................................
על העורך המקצועי xxxi ...................................................................................................
על מחבר נספח ד'xxxi .....................................................................................................
פרק ASP.NET 3.5 :1מתחילים 1 ..........................................................
כלי הפיתוח Visual Web Developerשל מיקרוסופט 2 .........................................................
הורדה של 3 ........................................................................... Visual Web Developer
התקנת 3 ...................................................... Visual Web Developer Express Edition
כיצד זה פועל 4 ..........................................................................................................
יצירת אתר Webהראשון שלך בסביבת 5 ...................................................... ASP.NET 3.5
היכרות עם 9 ............................................................................................. ASP.NET 3.5
הבנת 10 ........................................................................................................ HTML
אלמנטים של 10 ......................................................................................... HTML
מאפיינים של 12 ......................................................................................... HTML
ההבדל בין HTMLלבין 13 ......................................................................... XHTML
תמיד סגור את האלמנטים 13 .............................................................................
תמיד השתמש באותיות "קטנות" עבור התגיות ושמות המאפיינים 13 .......................
תמיד הקף את ערך המאפיין בגרשיים 13 .............................................................
קנן את התגיות כהלכה 14 .................................................................................
תמיד הוסף הצהרת DOCTYPEלדף שלך 14 ......................................................
מבט ראשון ב14 .......................................................................... ASP.NET Markup -
היכרות עם סביבת הפיתוח )15 ................................................................................. (IDE
שטח הפיתוח הראשי 15 .............................................................................................
התפריט הראשי )15 ........................................................................... (Main Menu
אזור סרגל הכלים )16 ...................................................................... (Toolbar Area
תיבת הכלים )16 .................................................................................... (Toolbox
סייר הפתרון )17 ....................................................................... (Solution Explorer
תוכן עניינים vii
סייר בסיס הנתונים )17 ........................................................... (Database Explorer
טבלת המאפיינים )18 ................................................................... (Properties Grid
חלון המסמך )18 ....................................................................(Document Window
דף הפתיחה )18 ................................................................................. (Start Page
חלונות שמכילים מידע 21 ............................................................................................
רשימת השגיאות )22 ............................................................................. (Error List
חלון הפלט )22 ............................................................................(Output Window
חלון הסימנייה )22 .................................................................. (Bookmark Window
החלון 22 ......................................................................................... Find Results
התאמה אישית של סביבת הפיתוח )23 ...................................................................... (IDE
סידור מחדש של החלונות 23 .......................................................................................
התאמת תיבת הכלים 23 .............................................................................................
התאמת חלון המסמך )26 ............................................................ (Document Window
התאמת סרגלי כלים 26 ...............................................................................................
עריכת סרגלי כלים קיימים 27 ..................................................................................
יצירת סרגלי כלים משלך 27 ....................................................................................
התאמת קיצורי דרך למקלדת27 ...................................................................................
איפוס ) (resetהשינויים28 ...........................................................................................
איפוס פריסת החלונות 28 .......................................................................................
איפוס ארגז הכלים 28 ............................................................................................
איפוס כל ההגדרות 28 ...........................................................................................
היישום לדוגמה30 ...........................................................................................................
עצות מעשיות לגבי 32 .................................................................. Visual Web Developer
סיכום 32 ........................................................................................................................
תרגילים 33 ....................................................................................................................
פרק :2בניית אתר אינטרנט בסביבת 34 .................................ASP.NET
יצירת אתרים באמצעות 35 ............................................................................. VWD 2008
סוגים שונים של פרויקטים 35 .......................................................................................
35 .......................................................................................... Web Site Projects
36 ............................................................................... Web Application Projects
בחירת תבנית האתר הנכונה 36 ...................................................................................
37 ....................................................................................... ASP.NET Web Site
37 .................................................................................. ASP.NET Web Service
37 ................................................................................................. WCF Service
38 .............................................................................................Empty Web Site
יצירה ופתיחה של אתר אינטרנט חדש38 .......................................................................
יצירת אתרים חדשים 38 .........................................................................................
פתיחת אתרי אינטרנט קיימים 40 .............................................................................
עבודה עם קבצים באתר האינטרנט שלך 41 ........................................................................
סוגי הקבצים הרבים של אתר אינטרנט בסביבת 41 ................................... ASP.NET 3.5
קבצי אינטרנט 42 ..................................................................................................
קבצי נתונים 44 .....................................................................................................
viiiסדנת לימוד ASP.NET 3.5
הוספת קבצים קיימים 45 .............................................................................................
ארגון האתר שלך 46 ...................................................................................................
סוגים מיוחדים של קבצים 48 ........................................................................................
לעבוד עם טפסי אינטרנט )49 ........................................................................ (Web Forms
אפשרויות תצוגה שונות בטפסי אינטרנט49 ....................................................................
בחירה בין קוד ברקע לבין דפים עם קוד כלול 51 ..............................................................
הוספת סימני עריכה לדף 56 ........................................................................................
הוספה ועיצוב טקסט 56 .........................................................................................
הוספת טבלאות וסימני עריכה אחרים 59 ...................................................................
קישור בין דפים62 ......................................................................................................
עצות מעשיות לעבודה עם טפסי אינטרנט 64 .......................................................................
סיכום 65 ........................................................................................................................
תרגילים 65 ....................................................................................................................
פרק :3עיצוב דפי האינטרנט שלך 66 .....................................................
מדוע אתה צריך 66 ............................................................................................... ?CSS
בעיות בעריכה עם 67 ....................................................................................... HTML
כיצד פותרת CSSאת בעיות העיצוב68 .........................................................................
מבוא ל69 ............................................................................................................. CSS-
שפת 72 ........................................................................................................... CSS
גיליון סגנון )73 ....................................................................................... (Style Sheet
) Selectorsבוררים( 73 ..........................................................................................
74 ..................................................................................... Universal selector
74 ............................................................................................Type selector
74 ............................................................................................... ID Selector
75 .......................................................................................... Class Selector
הקבצה ושילוב של 75 ............................................................................. Selectors
מאפיינים )76 ........................................................................................... (Properties
ערכים )77 .................................................................................................... (Values
שימוש בהגדרה מקוצרת 78 .........................................................................................
הוספת CSSלדפים שלך 85 ........................................................................................
בחירת האפשרות לקישור גיליונות סגנון 85 ...............................................................
עבודה עם CSSב87 .................................................................. Visual Web Developer -
יצירת סגנונות חדשים בגיליונות סגנון חיצוני 87 ...............................................................
יצירת גיליונות סגנון 93 ................................................................................................
החלת סגנונות 99 .......................................................................................................
ניהול סגנונות 101 ......................................................................................................
עצות מעשיות לעבודה עם 104 .................................................................................. CSS
סיכום 105 ......................................................................................................................
תרגילים 106 ..................................................................................................................
פרק :4עבודה עם פקדי 107 .................................................. ASP.NET
מבוא לפקדי שרת 107 .....................................................................................................
מבט מקרוב על שרתי פקד של 112 .................................................................... ASP.NET
תוכן עניינים ix
הגדרת פקדים בדפים שלך 112 ....................................................................................
מאפיינים משותפים לכל הפקדים 112 ............................................................................
סוגי פקדים 115 ..............................................................................................................
פקדים בקטגוריה 115 .................................................................................. Standard
פקדים פשוטים 116 ...............................................................................................
פקדי רשימה 116 ..................................................................................................
פקדי מכולה 121 ...................................................................................................
מבט מקרוב על הפקד 122 .......................................................................Panel
הפקד 124 ...........................................................................................Wizard
פקדים נוספים בקטגוריה 128 ...................................................................Standard
LinkButtonו128 ....................................................................... ImageButton-
Imageו128 ................................................................................. ImageMap-
128 ................................................................................................ Calendar
128 .............................................................................................. FileUpload
Localize ,Literalו128 .................................................................... Substitute-
129 ............................................................................................... AdRotator
129 ............................................................................................ HiddenField
129 ....................................................................................................... XML
129 ...................................................................................................... Table
פקדי 129 ....................................................................................................... HTML
איך לבחור בין פקדי Standardלבין פקדי 130 ................................................. HTML
פקדי נתונים )130 ............................................................................................. (Data
פקדי בדיקת תקפות )130 .......................................................................... (Validation
פקדי ניווט )130 ....................................................................................... (Navigation
פקדי הזדהות -כניסה למערכת )131 .................................................................. (Login
הרחבות 131 ..................................................................................................... Ajax
מנוע המצב ) (State Engineשל 131 ..................................................................ASP.NET
מה זה מצב ) (Stateומדוע הוא חשוב? 132 ...................................................................
כיצד פועל מנוע המצב 133 ..........................................................................................
לא כל הפקדים סומכים על 137 .................................................................... ViewState
הערה לגבי ViewStateוביצועים 137 ............................................................................
עצות מעשיות לגבי עבודה עם פקדים 138 ...........................................................................
סיכום 139 ......................................................................................................................
תרגילים 140 ..................................................................................................................
פרק :5תכנות דפי Webב141 .............................................. ASP.NET-
מבוא לתכנות 142...........................................................................................................
סוגי נתונים ומשתנים 142.................................................................................................
המרת סוגי נתונים146................................................................................................
שימוש במערכים ) (Arraysואוספים )148.................................................... (Collections
הגדרה ועבודה עם מערכים )148................................................................. (Arrays
הגדרה ועבודה עם אוספים )151.......................................................... (Collections
מבוא לתבניות הקוד 152......................................................................... Generics
xסדנת לימוד ASP.NET 3.5
משפטים )153.............................................................................................(Statements
אופרטורים )154....................................................................................... (Operators
אופרטורי הצבה 154..............................................................................................
אופרטורים אריתמטיים 154....................................................................................
אופרטורי השוואה 156...........................................................................................
אופרטורי שרשור 158............................................................................................
אופרטורים לוגיים 159............................................................................................
קבלת החלטות 161....................................................................................................
המבנים If Else ,Ifו162.............................................................................. ElseIf-
המבנים 164.................................................................... Switches / Select Case
לולאות 169...............................................................................................................
הלולאה 169.................................................................................................. For
הלולאות 171.......................................................................... For Each / foreach
הלולאות Whileו171.................................................................................... Until-
ארגון הקוד 173..............................................................................................................
שיטות :פונקציות ושגרות173.......................................................................................
התיקייה 176............................................................................................App_Code
ארגון קוד בעזרת מרחבי שמות )180....................................................... (namespaces
יבוא מרחבי שמות182...........................................................................................
כתיבת הערות 182.....................................................................................................
הערות כלולות בקוד 183........................................................................................
כתיבת הערות 184........................................................................................ XML
יסודות תכנות מוכוון אובייקטים185....................................................................................
מונחי OOחשובים 185...............................................................................................
אובייקטים 185.....................................................................................................
מחלקות 186........................................................................................................
מאפיינים 187.......................................................................................................
יצירת מאפיינים לקריאה-בלבד ולכתיבה-בלבד 189...............................................
שיטות190...........................................................................................................
פונקציות בנייה )בנאים( 191...................................................................................
הורשה 193..........................................................................................................
מגבילי גישה )196.....................................................................(Access Modifiers
אירועים 197..............................................................................................................
עצות מעשיות לתכנות נכון 199..........................................................................................
סיכום 200......................................................................................................................
תרגילים 201..................................................................................................................
פרק :6יצירת אתרי Webבעלי מראה עקבי 203 ......................................
עקביות עריכה ועיצוב של דף בעזרת דפים ראשיים203.........................................................
יצירת דפים ראשיים 205.............................................................................................
יצירת דפי תוכן 208....................................................................................................
מבט מקרוב בדפים ראשיים 211..............................................................................
קינון של דפים ראשיים 212.....................................................................................
תוכן עניינים xi
אזהרות לגבי דפים ראשיים 212..............................................................................
שימוש בדף בסיס מרכזי 213............................................................................................
מבוא למחזור החיים של דף 214................................................................... ASP.NET
יישום של דף הבסיס216.............................................................................................
יצירת תבניות דף לשימוש חוזר 221..............................................................................
ערכות נושא 225.............................................................................................................
סוגים שונים של ערכות נושא 226.................................................................................
בחירה בין Themeלבין 226............................................................StyleSheetTheme
החלת ערכות נושא227...............................................................................................
הרחבת ערכות נושא 231............................................................................................
החלפת ערכות נושא באופן דינמי233............................................................................
240..................................................................................................................... Skins
יצירת קובץ 242................................................................................................. Skin
243.................................................................................................... Named Skins
הערה אחרונה על 244....................................................................................... Skins
עצות מעשיות ליצירת דפים עקביים245..............................................................................
סיכום 245......................................................................................................................
תרגילים 247..................................................................................................................
פרק :7ניווט באתר 248 ........................................................................
התמצאות ברחבי האתר 249............................................................................................
מהם URLמוחלט ו URL-יחסי249...............................................................................
URLיחסי 249.....................................................................................................
URLיחסי מבוסס-שורש 250 ............................................................................
URLיחסי בפקד צד שרת 251...........................................................................
URLמוחלט 253..................................................................................................
הבנת דפי ברירת המחדל 254......................................................................................
שימוש בפקדי הניווט 255.................................................................................................
ארכיטקטורת פקדי הניווט 255.....................................................................................
בחינת הקובץ 256................................................................................. Web.sitemap
היבטים חשובים של הקובץ 256......................................................... Web.sitemap
שימוש בפקד 258............................................................................................. Menu
דברים שיש לשקול כשמשתמשים ב259......................................................... Menu-
יצירת גרסה בסיסית של הפקד 260................................................................ Menu
עיצוב הפקד 264......................................................................................... Menu
שימוש בפקד 268....................................................................................... TreeView
שימוש בפקד 272..................................................................................SiteMapPath
הכוונה מחדש על ידי תכנות 274........................................................................................
הכוונת הלקוח לדף אחר על ידי תכנות 274.....................................................................
הכוונה מחדש מצד השרת 277.....................................................................................
עצות מעשיות לניווט 279..................................................................................................
סיכום 280......................................................................................................................
תרגילים 281..................................................................................................................
xiiסדנת לימוד ASP.NET 3.5
פרק :8פקדי משתמש 282 ....................................................................
היכרות עם פקדי משתמש 283..........................................................................................
יצירת פקדי משתמש 283............................................................................................
הוספת פקדי משתמש לדף תוכן או לדף ראשי 287..........................................................
רישום פקדי משתמש ברחבי האתר 290........................................................................
אזהרות לגבי פקדי משתמש 291..................................................................................
הוספת לוגיקה לפקדי משתמש293....................................................................................
יצירת סוגי נתונים משלך עבור מאפיינים 293..................................................................
יישום מאפייני 299..................................................................................... ViewState
שיקולים לשימוש ב305.............................................................................. ViewState-
עצות מעשיות למשתמש בפקדי משתמש306......................................................................
סיכום 306......................................................................................................................
תרגילים 307..................................................................................................................
פרק :9בדיקת אימות הקלט מהמשתמש 308 .........................................
איסוף נתונים מהמשתמש 309..........................................................................................
אימות הקלט של המשתמש המוזן לדפי אינטרנט 310......................................................
פקדי האימות של 310............................................................................ ASP.NET
אזהרה בדבר בדיקת אימות בצד-לקוח 311...............................................................
שימוש בפקדי אימות 311.......................................................................................
פקדי האימות התקניים 314....................................................................................
ההבדל בין המאפיינים Textו315............................................... ErrorMessage-
אימות טווח – 315................................................................... RangeValidator
אימות של ביטוי – 316.......................................... RegularExpressionValidator
אימות השוואה – 316.......................................................... CompareValidator
הפקדים CustomValidatorו320............................................ ValidationSummary-
עיבוד נתונים בשרת 325..................................................................................................
שליחת דואר אלקטרוני מאתר האינטרנט שלך 326..........................................................
קביעת תצורת האתר לצורך שליחת דואר אלקטרוני 326.............................................
יצירת הודעות דואר אלקטרוני 327...........................................................................
הבנת הצורך באימות של בקשה 331........................................................................
קריאה מקבצי טקסט 332............................................................................................
עצות מעשיות לאימות נתונים 337......................................................................................
סיכום 338......................................................................................................................
תרגילים 339..................................................................................................................
פרק 340 .............................................................. ASP.NET AJAX :10
מבוא ל341............................................................................................................ Ajax-
שימוש ב ASP.NET Ajax -בפרויקטים שלך 341..................................................................
יצירת דפים חופשיים מהבהוב 342................................................................................
הפקד 342...................................................................................... UpdatePanel
מבט מקרוב על הפקד 345................................................................ UpdatePanel
הפקד 346.................................................................................... ScriptManager
מתן משוב למשתמשים 347.........................................................................................
תוכן עניינים xiii
הפקד 347................................................................................. UpdateProgress
שימוש בפקד 352............................................................................................. Timer
שימוש בשירותי Webבאתרי אינטרנט מבוססי 357...................................................... Ajax
מהם שירותי 357............................................................................................. ?Web
יצירת שירותי 359.............................................................................................. Web
שימוש בשירותי Webבאתר אינטרנט מבוסס 362................................................... Ajax
קביעת תצורת שירות 363.............................................................................. Web
קביעת תצורת 363........................................................................ ScriptManager
זו רק ההתחלה 370...................................................................................................
עצות מעשיות להפעלת 370...................................................................................... Ajax
סיכום 371......................................................................................................................
תרגילים 372..................................................................................................................
פרק :11מבוא לבסיסי נתונים 373 .........................................................
מהו בסיס נתונים? 374....................................................................................................
סוגים שונים של בסיסי נתונים טבלאיים 375........................................................................
שימוש ב SQL-לעבודה עם נתוני בסיס נתונים 375...............................................................
אחזור וביצוע פעולות על נתונים378..............................................................................
קריאת נתונים 378................................................................................................
בחירת נתונים 378...........................................................................................
סינון נתונים379...............................................................................................
סידור נתונים 381.............................................................................................
צירוף נתונים 385.............................................................................................
יצירת נתונים 389..................................................................................................
עדכון נתונים 389..................................................................................................
מחיקת נתונים 389................................................................................................
יצירת טבלאות משלך 393................................................................................................
סוגי נתונים במערכת 393......................................................................... SQL Server
הבנת מפתחות ראשיים וזהויות 394..............................................................................
יצירת קשרים בין טבלאות 398.....................................................................................
עצות מעשיות לעבודה עם בסיסי נתונים 402.......................................................................
סיכום 403......................................................................................................................
תרגילים 404..................................................................................................................
פרק :12הצגה ועדכון של נתונים405 .....................................................
פקדי נתונים )405.................................................................................... (Data Controls
פקדים קשורי-נתונים )406........................................................ (Data-Bound Controls
פקדי רשימה )406........................................................................... (List Controls
פקדי פריט יחיד )407........................................................... (Single Item Controls
פקדי דפדוף )408....................................................................... (Paging Controls
פקדי מקור נתונים )408........................................................... (Data Source Controls
פעולה משותפת של פקדים קשורי-נתונים ופקדי מקור נתונים408...........................................
הצגה ועריכה של נתונים על ידי 409............................................................... GridView
הכנסת נתונים על ידי 415.........................................................................DetailsView
xivסדנת לימוד ASP.NET 3.5
אחסון מחרוזות החיבור ) (Connection Stringsב418................................... web.config-
סינון נתונים420.........................................................................................................
התאמה אישית של מראה פקדי הנתונים 427......................................................................
קביעת תצורת עמודות או שדות של פקדים קשורי-נתונים 427...........................................
עדכון והכנסת נתונים 433.................................................................................................
שימוש ב DetailsView-להכנסת נתונים ועדכונם 433.......................................................
עצות מעשיות להצגת ועדכון נתונים 448.............................................................................
סיכום 448......................................................................................................................
תרגילים 449..................................................................................................................
פרק 450 .............................................................................. LINQ :13
מבוא ל451.......................................................................................................... LINQ-
הסוגים השונים של 452..................................................................................... LINQ
452........................................................................................... LINQ to Objects
452............................................................................................... LINQ to XML
452................................................................................................LINQ to SQL
הצגת 452................................................................................................. LINQ to SQL
מיפוי מודל הנתונים למודל אובייקטים453......................................................................
הצגת תחביר השאילתה458.............................................................................................
אופרטורי שאילתה תקניים458.....................................................................................
459.......................................................................................................... Select
459........................................................................................................... From
459......................................................................................................Order By
460......................................................................................................... Where
Average ,Max ,Min ,Sumו460................................................................. Count-
TakeWhile ,Skip ,Takeו461.............................................................. SkipWhile-
Singleו461................................................................................ SinglOrDefault-
Last ,FirstOrDefault ,Firstו462.................................................... LastOrDefault-
עיצוב נתונים עם סוגים אנונימיים )463............................................ (Anonymous Types
שימוש בפקדי שרת עם שאילתות 468....................................................................... LINQ
פקדים חדשים שהוצגו ב469................................................................ ASP.NET 3.5 -
הפקד 469................................................................................. LinqDataSource
הצגת הפקד 475..................................................................................... ListView
הפקד 492.......................................................................................... DataPager
כמה הערות לגבי ביצועים498......................................................................................
עצות מעשיות לעבודה ב498................................................................................... LINQ-
סיכום 499......................................................................................................................
תרגילים 500..................................................................................................................
פרק :14הצגת נתונים -נושאים מתקדמים 501 ......................................
עיצוב הפקדים באמצעות סגנונות502.................................................................................
מבוא לסגנונות 503....................................................................................................
שילוב סגנונות ,ערכות נושא ו507....................................................................... Skins-
טיפול באירועים 511........................................................................................................
תוכן עניינים xv
ביקור חוזר במחזור החיים של דפי ופקדי 512................................................. ASP.NET
מחזור החיים של דף ASP.NETואירועים בפקדי נתונים 518.......................................
טיפול בשגיאות שקורות בפקדי מקור נתונים525.............................................................
מיטמון )530.................................................................................................... (Caching
מלכודות נפוצות במיטמון נתונים 531.............................................................................
הימנעות משימוש בנתונים שהתיישנו 532.................................................................
אל תסמוך על כך שהנתונים יהיו שם 532..................................................................
דרכים שונות להטמנת נתונים ביישומי אינטרנט בסביבת 533............................ ASP.NET
מיטמון הפלט )534......................................................................(Output Caching
מיטמון עם פקדי מקור נתונים538............................................................................
מיטמון על ידי תכנות 539.......................................................................................
עצות מעשיות לגבי נתונים 543..........................................................................................
סיכום 543......................................................................................................................
תרגילים 544..................................................................................................................
פרק :15אבטחת אתר אינטרנט בסביבת 545 ....................ASP.NET 3.5
היכרות עם נושאי האבטחה 546........................................................................................
זהות :מי אתה )546.......................................................................................(identity
אימות :איך תוכל להוכיח מי אתה? 546.........................................................................
הרשאה :מה אתה מורשה לעשות? )546............................................... (authorizations
מבוא לשירותי היישום של 547..................................................................... ASP.NET
הצגת פקדי התחברות )548................................................................................... (Login
פקדי 554........................................................................................................ Login
554........................................................................................................... Login
556................................................................................................... LoginView
557................................................................................................. LoginStatus
557..................................................................................................LoginName
560....................................................................................... CreateUserWizard
563..................................................................................... PasswordRecovery
564........................................................................................ ChangePassword
קביעת התצורה של יישום האינטרנט567.......................................................................
מנהל התפקיד )571.................................................................................. (role manager
קביעת תצורת מנהל התפקיד 572................................................................................
ניהול משתמשים עם 572................................................................................. WSAT
עיצוב יישום אינטרנט כדי שיפעל עם תפקידים 577..........................................................
בדיקת תפקידים על ידי תכנות 582...............................................................................
עצות מעשיות בנושא אבטחה 586.....................................................................................
סיכום 586......................................................................................................................
תרגילים 587..................................................................................................................
פרק :16התאמה אישית של אתרי אינטרנט 588 .....................................
הבנת היישום 589................................................................................................ Profile
עיצוב 590...................................................................................................... Profile
יצירת מאפייני Profileפשוטים 590..........................................................................
xviסדנת לימוד ASP.NET 3.5
יצירת קבוצות פרופיל591.......................................................................................
שימוש בסוגי נתונים לא-תקניים591.........................................................................
שימוש ב597................................................................................................. Profile-
דרכים אחרות להתמודדות עם 615......................................................................... Profile
זיהוי אנונימי 616........................................................................................................
ניקוי פרופילים אנונימיים ישנים 616...............................................................................
הצצה לפרופילים של משתמשים אחרים 618..................................................................
עצות מעשיות בנושא התאמה אישית 622...........................................................................
סיכום 622......................................................................................................................
תרגילים 623..................................................................................................................
פרק :17טיפול בחריגים ,ניפוי ומעקב
)624 ........... (Exception Handling, Debugging, and Tracing
טיפול בחריגים 625.........................................................................................................
סוגים שונים של שגיאות 625........................................................................................
שגיאות תחביר 625...............................................................................................
שגיאות לוגיות 626................................................................................................
שגיאות זמן ביצוע 627...........................................................................................
תפיסת חריגים והטיפול בהם 627.................................................................................
טיפול גלובלי בשגיאות ודפי שגיאות מותאמים אישית 635......................................................
יסודות ניפוי השגיאות 641................................................................................................
תמיכת כלים בניפוי שגיאות 645........................................................................................
שוטטות בקוד במהלך הניפוי 645..................................................................................
חלונות ניפוי שגיאות 646.............................................................................................
צפייה במשתנים 646.............................................................................................
החלון 646............................................................................................ Watch
החלון 647............................................................................................. Autos
החלון 648............................................................................................Locals
חלונות אחרים 648................................................................................................
חלון 648..................................................................................... Breakpoints
חלון 648........................................................................................ Call Stack
החלון 648..................................................................................... Immediate
ניפוי תסריטי צד-לקוח 652................................................................................................
מעקב ) (Tracingאחר דפי האינטרנט של 656..................................................... ASP.NET
שימוש ביכולות המעקב הרגילות 657............................................................................
מעקב אחר דפים יחידים 657..................................................................................
מעקב אחר האתר כולו658.....................................................................................
הוספת מידע משלך ל660................................................................................. Trace-
מעקב וביצועים 663....................................................................................................
הערת אבטחה 663....................................................................................................
עצות מעשיות בנושא ניפוי 663..........................................................................................
סיכום 664......................................................................................................................
תרגילים 665..................................................................................................................
תוכן עניינים xvii
פרק :18פריסת אתר אינטרנט )666 ............ (Deploying Your Web Site
הכנת האתר לפריסה )667........................................................................... (deployment
הימנעות מהגדרות מובנות בתוכנה 667.........................................................................
הקובץ 668......................................................................................... web.config
תחביר הביטוי )668............................................................................ (expression
המחלקה 669....................................................................ConfigurationManager
העתקת האתר 674.........................................................................................................
יצירת עותק פשוט של האתר 675.................................................................................
הפצת האתר )678....................................................................................(publishing
הפעלת האתר בשליטת 679........................................................................................ IIS
התקנת שרת האינטרנט וקביעת התצורה שלו 679..........................................................
כיצד לוודא ש IIS-מותקן680...................................................................................
Windows XPו680.....................................................Windows Server 2003 -
681........................................................................................Windows Vista
681............................................................................ Windows Server 2008
התקנת ASP.NETוקביעת התצורה 683..................................................................
האבטחה ב688................................................................................................... IIS-
הגדרות NTFSעבור 689........................................................................ Planet Wrox
איתור וטיפול בשגיאות שרת אינטרנט 694..........................................................................
העברת נתונים לשרת מרוחק 695......................................................................................
שימוש באשף הפצת בסיס הנתונים 696.............................................................................
יצירת בסיס הנתונים מחדש 698...................................................................................
רשימת תיוג לפריסה 699.................................................................................................
מה הלאה? 701..............................................................................................................
סיכום 701......................................................................................................................
תרגילים 702..................................................................................................................
נספח א' :תשובות לתרגילים 703 ...........................................................
נספח ב' :קביעת התצורה של 724 ..................... SQL Server 2005/2008
קביעת התצורה של 724....................................................................... SQL Server 2005
מינוח ומושגים 725.....................................................................................................
אימות 725........................................... (SQL Server Authentication) SQL Server
אימות 725............................................................................................ Windows
בחירה בין אימות Windowsלבין אימות שרת 726.....................................................
שימוש ב726........................................................ SQL Server Management Studio -
השגת והתקנת 726.............................. SQL Server Management Studio Express
הפעלת חיבורים מרחוק אל שרת 727.........................................................SQL Server
צירוף בסיסי נתונים אל 728................................................................. SQL Server
חיבור היישום אל 731..................................................................... SQL Server 2005
תרחיש - 1שימוש באימות 731............................................................ SQL Server
תרחיש - 2שימוש באימות Windowsכאשר IISובסיס הנתונים באותו מחשב 735.........
xviiiסדנת לימוד ASP.NET 3.5
קביעת התצורה של שירותי היישום 738..............................................................................
קביעת התצורה של בסיס הנתונים עבור שירותי היישום 739.............................................
דריסת מחרוזת החיבור של 740........................................................... LocalSqlServer
דריסת ההגדרות של שירותי היישום 741.......................................................................
נספח ג' :תכונות חדשות )744 ....................................................... (SP1
744................................................................................. ASP.NET 3.5 Service Pack 1
היסטוריית 744.................................................................................................. Ajax
745.............................................................................................................. jQuery
745............................................................................................. Entity Framework
נתונים דינמיים )746................................................................................ (Dynamic Data
שירותי הנתונים של 746.................................................................................. ADO.NET
נספח ד'747 ..................................................................... Silverlight :
מהו 747...................................................................................................... ?Silverlight
ארכיטקטורת 752............................................................................................Silverlight
752.................................................................................................................... XAML
סגנונות ותבניות755........................................................................................................
קשירת נתונים 756..........................................................................................................
סיכום 758......................................................................................................................
אינדקס 759 .........................................................................................
תוכן עניינים xix
הקדמה
כדי לבנות אתר אינטרנט מבוסס בסיס נתונים ,שיהיה יעיל ומושך ,יש צורך בשני דברים :סביבת
עבודה יציבה ומהירה שבה ירוצו דפי האינטרנט ,וסביבה עשירה ונרחבת ליצירה ותכנות של
דפים אלה .שתי הדרישות מתמלאות עם ASP.NET 3.5ו .Visual Web Developer 2008 -ביחד הן
מהוות את הפלטפורמה בה"א הידיעה ליצירת יישומי אינטרנט אינטראקטיביים ודינמיים.
ASP.NET 3.5בנויה על גב קודמתה הפופולרית .ASP.NET 2.0סביבת העבודה NET 3.5של
מיקרוסופט בכלל ,ו ASP.NET 3.5 -בפרט ,הוסיפו מספר רב של תכונות נחוצות לתערובת,
בעודן שומרות על תאימות לאחור עם אתרים שנבנו תוך שימוש בגרסה הישנה יותר.
גרסה 2.0של סביבת העבודה NETהכניסה את הרעיון של "פחות קוד" ASP.NET 3.5 ,ממשיכה
רעיון זה ומאפשרת להשיג יותר עם עוד פחות קוד .תכונות חדשות כמו LINQשהתווספו לסביבת
העבודה ,NETמאפשרות לגשת לבסיס נתונים ללא צורך בכתיבת קוד או עם כתיבה מעטה בלבד.
שילוב ASP.NET Ajaxשל מיקרוסופט לתוך סביבת העבודה ,ASP.NETוVisual Web Developer -
פירושו שביכולתך ליצור כעת ממשקי אינטרנט מהירי תגובה ואלגנטיים על ידי גרירת כמה
פקדים אל הדף והגדרת כמה מאפיינים .הספר נותן מבט מעמיק בשתי טכנולוגיות אלו.
תמיכת Visual Web Developerב ,(CSS) Cascading Style Sheets -שפת עיצוב דפי האינטרנט,
עברה שיפוץ משמעותי .התמיכה בזמן עיצוב ,שמציגה את הדף כפי שייראה בסופו של דבר
בדפדפן ,שופרה במידה ניכרת .בנוסף Visual Web Developer ,מגיעה כעת עם מגוון כלים
שהופכים את כתיבת CSSלנעימה וקלה.
עם זאת ,התמיכה בגרור-ושחרר ובכלים חזותיים אינה הדבר היחיד שתלמד מספר זה.
3.5ו Visual Web Developer 2008 -מגיעות עם קבוצת כלים מעולה ומקיפה שמטרתה לסייע
בתכנות יישומי אינטרנט .טווח כלים זה נע מהתחביר החדש של LINQשמאפשר לתשאל נתונים
ובסיסי נתונים מיישומי אינטרנט ,ועד ליכולות הניפוי המשופרות משמעותית שמאפשרות ניפוי
יישום מ JavaScript-של צד-לקוח ,לאורך כל הדרך עד לקוד צד-שרת .כל הכלים האלה מצוידים
בממשק המשתמש המוכר ובפקודות והפעולות המוכרות.
ASP.NET
ASP.NET 3.5משתמשת באותו runtimeכמו גרסה .2.0הדבר מבטיח תאימות מעולה לאחור
עם הגרסה הישנה ,כלומר ,יישומי ASP.NET 2.0ימשיכו להתבצע בסביבת העבודה החדשה.
אבל אל תוטעה על ידי העובדה שה runtime-לא השתנה .למרות שהמבנה הטכני הבסיסי
שנדרש לביצוע יישום אינטרנט לא השתנה ,הרי שסביבת העבודה NET 3.5ו ASP.NET-הוסיפו
תכונות חדשות רבות ,כפי שתגלה בספר זה.
הקדמה xxi
קרוב לוודאי שהדבר הטוב ביותר בנוגע ל Visual Web Developer 2008 -הוא מחירה .היא זמינה
בחינם .למרות שהגרסאות המסחריות של Visual Studio 2008מגיעות עם ,Visual Web Developer
ביכולתך להוריד ולהתקין את Express Editionהחינמית .קרוב לוודאי שהדבר הופך את
Visual Web Developer 2008ו ASP.NET 3.5 -לטכנולוגיות פיתוח האינטרנט המושכות ביותר
והמשכנעות ביותר שזמינות כיום.
למי מיועד ספר זה
ספר זה נועד לכל מי שרוצה ללמוד כיצד לבנות אתרי אינטרנט עשירים ואינטראקטיביים
שפועלים על בסיס פלטפורמת מיקרוסופט .הידע שתשיג מספר זה יהווה בסיס נהדר לבניית
אתר אינטרנט מסוג כלשהו ,החל מאתרים שקשורים לתחביב וכלה באתרים למטרות מסחריות.
גם מי שתכנות אינטרנט חדש עבורו ,יוכל לעקוב אחר הספר ,מכיוון שהספר אינו מניח רקע
קודם בתכנות אתרי אינטרנט .הספר מתחיל ממש בצעדים הראשונים של תכנות אינטרנט על
ידי כך שהוא מראה כיצד להשיג ולהתקין את .Visual Web Developerהפרקים העוקבים
מציגים טכנולוגיות חדשות באופן הדרגתי ,תוך הסתמכות על הידע שנצבר בפרקים הקודמים.
האם יש לך העדפה ברורה של Visual Basicעל פני ,C#או להפך? ואולי אתה סבור ששתי
השפות "מגניבות"? או שמא לא גיבשת דעה וברצונך ללמוד את שתי השפות? כך או כך ,הספר
ימצא חן בעיניך מכיוון שכל דוגמאות הקוד מוצגות בשתי השפות!
גם אם הנך בן-בית בגרסאות קודמות של ,ASP.NETבפרט גרסאות ,1.xתוכל ללמוד רבות
מספר זה .למרות שרעיונות רבים הועברו מ ASP.NET 2.0 -אל ,ASP.NET 3.5תגלה שאפשר
למצוא בספר חומר חדש רב ,כולל מבוא ל ,LINQ-כלי הניפוי החדשים של CSSו,JavaScript-
פקדים חדשים של ,ASP.NETתמיכה משולבת ב ,ASP.NET Ajax -תכונות חדשות ב SP1 -ומבוא
על .Silverlight
במה עוסק הספר
ספר זה ילמד אותך ליצור אתר אינטרנט אינטראקטיבי ,מונע-נתונים ועשיר בתכונות .למרות
שזו משימה כבדה למדי ,תמצא שבעזרת Visual Web Developer 2008היא אינה כה קשה.
תעקוב אחר כל התהליך של בניית אתר אינטרנט ,החל מהתקנת Visual Web Developer 2008
בפרק ,1וכלה בפריסת יישום האינטרנט בשרת productionבפרק .18הספר מחולק ל18-
פרקים שכל אחד מהם מוקדש לנושא מסוים ו 4-נספחים.
~
פרק ASP.NET 3.5 - 1מתחילים
בפרק זה תלמד כיצד להשיג ולהתקין את .Visual Web Developer 2008תקבל הוראות
להורדת והתקנת גרסת החינם של Visual Web Developer 2008הקרויה Express
.Editionתערוך גם היכרות עם ,HTMLהשפה שמאחורי כל דף אינטרנט .הפרק מסתיים
בסקירה של אפשרויות ההתאמה האישית שמציעה .Visual Web Developer
xxiiסדנת לימוד ASP.NET 3.5
~
פרק 2
-בניית אתר אינטרנט בסביבת ASP.NET
פרק זה מראה כיצד ליצור אתר אינטרנט חדש ,וכיצד להוסיף לו אלמנטים חדשים כמו
דפים .בנוסף ללימוד נושא יצירת אתר בנוי היטב ,תלמד גם כיצד להשתמש בכלים
הרבים של Visual Web Developerליצירת דפי HTMLו.ASP.NET-
~
פרק - 3עיצוב דפי האינטרנט שלך
Visual Web Developerמגיעה עם כלים רבים שמאפשרים ליצור דפי אינטרנט
מעוצבים היטב ומושכים .בפרק זה תלמד כיצד להשתמש בכלים אלה בצורה חכמה.
בנוסף ,תלמד על ,CSSהשפה שמשמשת לעיצוב דפי אינטרנט.
~
פרק - 4עבודה עם פקדי
ASP.NET
פקדי שרת של ASP.NETהם אחד המושגים החשובים ביותר ב .ASP.NET-הם מאפשרים
ליצור אתרי אינטרנט מורכבים ועשירי תכונות ,על ידי קוד מועט ביותר .בפרק תערוך
היכרות עם פקדי שרת זמינים רבים ,ותלמד למה הם משמשים וכיצד להשתמש בהם.
~
פרק - 5תכנות דפי
WebבASP.NET-
למרות שכלי CSSהמובנים ופקדי השרת של ASP.NETיכולים לקדם אותך מאוד ביצירת
דפי אינטרנט ,סביר להניח שתשתמש בשפת תכנות כדי לשפר את הדפים .פרק זה
משרת כמבוא לתכנות ,עם דגש חזק על תכנות דפי אינטרנט .כל הדוגמאות שתראה
בפרק זה )וביתרת הספר( הן בשתי השפות Visual Basic ,ו ,C#-ותוכל לבחור את
המועדפת עליך.
~
פרק - 6יצירת אתרי webבעלי מראה עקבי
עקביות היא גורם חשוב בהענקת מראה מקצועי ומושך לאתר אינטרנט.
מסייעת ליצירת דפים בעלי מראה עקבי באמצעות השימוש בדפים ראשיים ,אשר
מאפשרים להגדיר את המראה והתחושה הגלובליים של דף .ערכות נושא ו skins-עוזרים
למרכוז המראה של פקדים ואלמנטים חזותיים אחרים באתר .תלמד גם ליצור דף בסיס
שעוזר למרכוז קוד שמשתמשים בו בכל הדפים באתר.
ASP.NET
~
פרק - 7ניווט באתר
ASP.NETמגיעה עם כמה פקדי ניווט שתפקידם לעזור למבקרים למצוא את דרכם
באתר .פקדים אלה משמשים לבניית מבנה הניווט של האתר .הם יכולים להיות
מחוברים למפה המרכזית של האתר ,שמגדירה את הדפים באתר האינטרנט .תלמד גם
כיצד לשלוח משתמשים מדף אחד לאחר על ידי תכנות.
~
פרק - 8פקדי משתמש
פקדי משתמש הם קטעי דפים שניתן להשתמש בהם שימוש חוזר בדפים רבים באתר
האינטרנט .ככאלה הם מעולים לתכנים חוזרים כמו תפריטים ,כרזות פרסום וכו' .בפרק זה
תלמד כיצד ליצור ולהשתמש בפקדי משתמש ,ולשפר אותם עם אינטליגנציה תכנותית.
הקדמה xxiii
~
פרק - 9בדיקת אימות הקלט מהמשתמש
חלק ניכר מהאינטראקטיביות באתר נקבע על ידי הקלט מהמשתמשים .הפרק מראה
כיצד לקבל קלט מהמשתמשים ,לבדוק את תקפותו ,ולעבד אותו תוך שימוש בפקדי
שרת של .ASP.NETבנוסף ,תלמד כיצד לשלוח דואר אלקטרוני מיישום אינטרנט
מבוסס ,ASP.NETוכיצד לקרוא מקבצי טקסט.
~
פרק 10
ASP.NET Ajax -
ASP.NET Ajaxשל מיקרוסופט מאפשר ליצור דפי אינטרנט בעלי מראה נאה וחופשיים
מהבהוב ,שסוגרים את הפער בין יישומי שולחן העבודה המסורתיים לבין יישומי
אינטרנט .בפרק זה תלמד כיצד להשתמש בתכונות המובנות של Ajaxכדי לשפר את
נוכחות דפי האינטרנט שלך .תוצאת הדבר היא אינטראקציה חלקה יותר עם האתר.
~
פרק - 11מבוא לבסיסי נתונים
הבנת השימוש בבסיסי נתונים חיונית לבניית אתרי אינטרנט מודרניים ,מכיוון שרוב
אתרי האינטרנט המודרניים משתמשים בבסיס נתונים .תלמד את יסודות ,SQLשפת
השאילתות שמאפשרת גישה ושינוי הנתונים בבסיס נתונים .בנוסף ,תכיר את כלי בסיס
הנתונים שנמצאים ב Visual Web Developer -ומסייעים ליצירת וניהול בסיסי נתונים
מסוג .SQL Server
~
פרק - 12הצגה ועדכון של נתונים
פרק זה מתבסס על הידע שרכשת בפרק הקודם .הפרק מראה כיצד להשתמש בפקדים
קשורי-נתונים ובפקדי מקור נתונים של ,ASP.NETכדי ליצור ממשק עשיר שיאפשר
למשתמשים אינטראקציה עם הנתונים בבסיס הנתונים שפקדים אלה מכוונים אליהם.
~
פרק 13
LINQ -
LINQהוא הפתרון החדש של מיקרוסופט לגישה לאובייקטים ,בסיסי נתונים,
ועוד .בפרק זה תלמד כיצד להשתמש ב LINQ to SQL -כדי לגשת לבסיסי נתונים מסוג
.SQL Serverבמקום לכתוב קוד רב באופן ידני ,תיצור קבוצת אובייקטים של LINQ
שיעשו עבורך את "העבודה השחורה" .פרק זה מסביר מהי ,LINQכיצד להשתמש
במעצב החזותי של ,LINQהמובנה ב ,Visual Web Developer -וכיצד לכתוב שאילתות
LINQכדי לקבל נתונים מבסיס נתונים SQL Serverאו לכתוב אליו.
XML
~
פרק - 14הצגת נתונים -נושאים מתקדמים
בעוד שהפרקים הקודמים התמקדו בעיקר ביסודות הטכניים של פעילות עם נתונים,
פרק זה מתבונן באותו נושא מנקודת המבט של ממשק המשתמש .תלמד כיצד לשנות
את המראה החזותי של הנתונים באמצעות שימוש בסגנונות שליטה .תלמד גם ליצור
אינטראקציה עם פקדים קשורי-נתונים ,וכיצד להאיץ את היישום על ידי שמירת עותק
מקומי של נתונים שניגשים אליהם בתדירות גבוהה.
xxivסדנת לימוד ASP.NET 3.5
~
פרק - 15אבטחת אתר אינטרנט בסביבת
ASP.NET 3.5
אבטחה זה נושא בעל חשיבות מהמעלה הראשונה ,למרות היותו מוצג מאוחר למדי
בספר .פרק זה מלמד כיצד להשתמש בתכונות המובנות של ASP.NETשקשורות
לאבטחה .תלמד על כמה שירותי יישום שמסייעים לקידום האבטחה .תלמד גם כיצד
לאפשר למשתמשים להירשם לקבלת חשבון באתר ,כיצד להבדיל בין משתמשים
אנונימיים למשתמשים מחוברים ,וכיצד לנהל את המשתמשים במערכת.
~
פרק - 16התאמה אישית של אתרי אינטרנט
פרק זה מראה כיצד ליצור דפי אינטרנט מותאמים אישית בעלי תוכן שמכוון
למשתמשים אינדיבידואליים ,זאת תוך שהוא מתבסס על תכונות האבטחה שהוצגו
בפרק .15תלמד כיצד להגדיר ולהשתמש ב Profile-של ASP.NETשמאפשר לאחסן
נתונים מותאמים אישית על מבקרים ידועים ואנונימיים.
~
פרק - 17טיפול בחריגים ,ניפוי ומעקב
כדי להבין ,לשפר ולתקן את הקוד שכתבת עבור דפי אינטרנט בסביבת ,ASP.NETיש
צורך בכלי ניפוי טובים Visual Web Developer .מגיעה עם תמיכה מעולה בניפוי,
שמאפשרת לאבחן את מצב היישום בזמן ביצוע ,ומסייעת במציאה ותיקון של בעיות
לפני שהמשתמשים נתקלים בהן.
~
פרק - 18פריסת אתר אינטרנט
כשתגיע לסיום הספר יהיה בידך אתר אינטרנט מוכן להיחשף לעולם .איך בדיוק
תעשה זאת? איזה דברים עליך לדעת ולהבין לפני שתחשוף את האתר לציבור הרחב?
פרק זה עונה על שאלות אלו ,ומספק תובנות לגבי תצורת מערכות ייצור שונות שבהן
עשוי אתר האינטרנט הסופי להתבצע.
~
נספח א' -תשובות לתרגילים
~
נספח ב' -קביעת התצורה של ) SQL Server 2005תקף גם לגרסה .(2008
~
נספח ג' -תכונות חדשות )(SP1
בנספח זה נציג בקצרה את התוספות שמיקרוסופט שחררה במסגרת העדכון
.Service Pack 1קבוצת תכונות זו מתפרסת על פני סביבת העבודה ,NETובכלל זה גם
.ASP.NETנספח זה עוסק בעיקר בתכונות החדשות של .ASP.NET
NET 3.5
~
נספח ד' -היכרות עם
Silverlight
בנספח זה תערוך היכרות עם הטכנולוגיה החדשה של מיקרוסופט שמהווה תשתית
,cross-browser ,cross-platformהמאפשרת למפתחים ומעצבים לייצר את הדור הבא
של מערכות אינטרנט.
~
אינדקס
הקדמה xxv
מבנה הספר
גישת הספר היא להסביר מושגים צעד אחר צעד ,תוך שימוש בדוגמאות עבודה והסברים
מפורטים .הסעיפים המפורסמים של ,Wroxנסה זאת וכיצד זה פועל ,מנחים אותך צעד אחר
צעד בביצוע משימה ,ומפרטים את הדברים החשובים תוך כדי התקדמות המשימה .אחרי כל
משימת נסה זאת בא סעיף כיצד זה פועל שמסביר את הצעדים שבוצעו בתרגיל.
בסופו של כל פרק תמצא תרגילים שיעזרו לך לבדוק את הידע שהשגת בפרק זה .התשובות
לכל השאלות נמצאות בנספח א' בסוף הספר .אל תדאג אם אינך יודע את התשובות לשאלות.
פרקים מאוחרים יותר אינם מניחים שביצעת את משימות סעיף התרגילים בפרקים קודמים.
מה נדרש כדי להשתמש בספר
הספר מניח שהמערכת שלך עונה על הדרישות הבאות:
~
מסוגלת להפעיל את .Visual Web Developerלגבי הדרישות המדויקות של המערכת
פנה לקובץ readmeשמגיע עם התוכנה.
~
מערכת ההפעלה היא לפחות ,Windows XP Professional Editionאו
)לפחות גרסת ,(Home Premiumאו אחת מגרסאות השרת של .Windows
Windows Vista
את רוב התרגילים ניתן אמנם לבצע בסביבת Windows XP Homeאו ,Windows Vista Basicאבל
כמה מפרקי הספר דורשים שימוש ב ,IIS-שרת האינטרנט של מיקרוסופט ,שמגיע רק עם
גרסאות Windowsשמופיעות ברשימת הדרישות לעיל.
הפרק הראשון מראה כיצד להשיג ולהתקין את ,Visual Web Developer 2008אשר בתורה מתקינה
את NET Framework version 3.5של מיקרוסופט ואת .SQL Server 2005 Express Editionכל מה
שאתה זקוק לו זו מערכת הפעלה טובה ודחף לקרוא את הספר!
קרא עוד על התוכנות הנדרשות בפרק .1
מוסכמות
כדי לעזור לך להפיק את המרב מהטקסט ולעקוב אחר מה שקורה ,נשתמש לאורך הספר בכמה
מוסכמות.
מוסכמות נסה זאת
נסה זאת הוא תרגיל שעליך לבצע בעקבות הטקסט בספר.
.1התרגיל מורכב מקבוצת צעדים.
.2כל צעד ממוספר.
.3עקוב אחר הצעדים עם עותק הקוד שבידך.
.4אחר כך קרא את הסעיף כיצד זה פועל כדי להבין מה קורה.
xxviסדנת לימוד ASP.NET 3.5
כיצד זה פועל
לאחר כל נסה זאת יוסברו הפעולות שביצעת והקוד שהקלדת לפרטיהן.
הערה :עצות ,רמזים והערות נמצאים בפונט שונה כמו זה.
סגנונות בטקסט:
~
מונחים חדשים ומילים חשובות מופיעים בגופן עבה כשהם מוצגים לראשונה.
~
לציון פריטי תפריט שדורשים לחיצה על תת-תפריט משמש הסימן ←.
לדוגמה.Folder ← New ← File ,
~
קוד או תוכן שאינם רלוונטיים לדיון מושמטים לחלוטין או מוחלפים בשלוש נקודות
עוקבות ,כך:
><tr
>";<td style="white-space: nowrap
... Menu items go here; not shown
></td
></tr
אנו נשתמש בשלוש הנקודות מבלי להתחשב בשפת התכנות של הדוגמה ,לפיכך
תראה אותן עבור CSS ,HTML ,Visual Basic ,C#ו .JavaScript-כשהן מופיעות בקוד
שעליך להקליד בעורך הקוד ,דלג על שלוש הנקודות ועל כל מה שבא בעקבותיהן
באותה שורה.
~
קוד שמוצג בפעם הראשונה ,או קוד רלוונטי אחר ,יופיע בצורה הבאה:
Dim albumOwner As String
"albumOwner = "Imar
lblOwner.Text = albumOwner
בניגוד לכך ,קוד פחות רלוונטי ,או קוד שכבר ראית קודם ,ייראה כך:
"albumOwner = "Imar
שים לב ,רצוי בכל מקרה להשתמש בקוד שתוריד מאתר האינטרנט ולא להקליד.
~
טקסט שמופיע על מסך ייראה לעתים קרובות כך:
,Letterגם אם טקסט המסך המקורי משתמש באופן שונה באותיות רישיות .הדבר נועד
להבליט את טקסט המסך משאר הטקסט.
Each Word Start With A Capital
הקדמה xxvii
קוד מקור
כשתבצע את הדוגמאות בספר תוכל לבחור בין הקלדת כל הקוד באופן ידני )לא מומלץ( לבין
שימוש בקבצי קוד המקור שנלווים לספר .כל קוד המקור שמשתמשים בו בספר זמין להורדה
מ .www.wrox.com -כדי להשיג את כל קוד המקור עבור הספר ,היכנס לאתר ,אתר את
כותרת הספר ) Beginning ASP.NET 3.5 In C# and VB -על ידי שימוש בתיבה Searchאו
באחת מרשימות הכותרות( ,ולחץ על הקישור Download Codeבדף פרטי הספר .מכיוון
שלספרים רבים יש כותרות דומות ,ייתכן שהדרך הקלה ביותר היא לחפש לפי ה .ISBN-ה-
ISBNשל ספר זה הוא .978-0-470-18759-3
הערה :תוכל להוריד את הקבצים האלה גם מאתר הוצאת הוד‐עמי .מצא את דף הספר ולחץ להורדה
על "קוד מקור "C#או "קוד מקור ."VBהמשך לפי הפסקאות הבאות.
באפשרותך להוריד את כל המקור עבור ספר זה כקובץ יחיד ) VBאו (C#שאותו תוכל לפרוס
בעזרת כלי הפריסה המועדף עליך .כשתשלוף את המקור עליך לוודא שיישמר המבנה המקורי
של התיקייה שהינה חלק מהורדת הקוד .כלי הפריסה השונים משתמשים בשמות שונים לתכונה
זו ,אבל חפש תכונה כמו User Folder Namesאו .Maintain Directory Structureברגע ששלפת את
הקבצים מהקוד שהורד ,אתה אמור לסיים עם תיקייה בשם Sourceותיקייה בשם .Resourcesאחר
כך צור תיקייה חדשה בשם BegASPNETבשורש כונן Cשלך ,והעבר את התיקיות Source
ו Resources-אל התיקייה החדשה .אתה אמור לסיים עם תיקיות C:\BegASPNET\Source
ו .C:\BegASPNET\Resources -תיקיית המקור מכילה את המקור עבור כל אחד מ 18-פרקי
הספר ,ואת הגרסה הסופית של יישום PlanetWroxשאיתה תפעל לאורך הספר .התיקייה
Resourcesמכילה קבצים שתזדקק להם בכמה מתרגילי הספר .אם הכל ילך כשורה ,אתה אמור
לסיים עם המבנה שמוצג בתרשים ה.1-
תרשים ה1-
xxviiiסדנת לימוד ASP.NET 3.5
בפרקים מאוחרים יותר תיצור בתוך התיקייה
מבנה התיקיות יהיה אז דומה לזה שבתרשים ה.2-
C:\BegASPNET
תיקיות בשם
Site
ו.Release-
תרשים ה2-
התיקייה Siteמכילה את האתר כפי שייבנה במהלך הספר .התיקייה Releaseתכיל את הגרסה
הסופית בסיום הספר .בכל פעם ש"תיתקע" באחת מדוגמאות הספר ,תוכל להעיף מבט בתיקייה
Sourceכדי לראות כיצד היו הדברים אמורים להיראות.
כשתרצה להפעיל את האתר עבור פרק מסוים כדי לראות כיצד הוא פועל ,עליך לפתוח את
תיקיית הפרק ב Visual Web Developer -כאתר אינטרנט .לפיכך תפתח ,לדוגמה ,את
C:\BegASPNET\Source\Chapter13ולא את תיקיית האב .C:\BegASPNET\Source
שים לב :יכול להיות שמראה האתר השתנה במקצת מזה המוצג בספר .דבר זה אינו צריך להפריע לך
בעבודה ובהבנה.
היצמדות למבנה זה מבטיחה ביצוע חלק של תרגילי נסה זאת בספר .ערבוב או מיקום לא נכון
של תיקיות אלו יקשה על ביצוע התרגילים ,ועלול אף לגרום למצבים בלתי-צפויים ולשגיאות.
בכל פעם שתיתקל בבעיה או שגיאה שאינן מוסברות בספר ,ודא שמבנה האתר עדיין קרוב לזה
שמוצג כאן.
טעויות דפוס או קוד
נעשה כל מאמץ כדי לוודא שהטקסט והקוד נקיים משגיאות ,עם זאת ,אף אחד אינו מושלם,
ושגיאות אכן קורות .אם תמצא בספר שגיאה ,כמו שגיאת איות או קטע קוד שגוי ,שלח אלינו
ונעדכן באתר .דיווח על טעויות דפוס יכול לחסוך לקורא אחר שעות של תסכול ,ובו-בזמן
יעזור לספק מידע איכותי עוד יותר .שלח מייל ל [email protected] -ובנושא כתוב .59447
דף שגיאות Errataתוכל למצוא באתר של הספר באנגלית .www.wrox.comבתרגום לעברית
בספר זה השתדלנו להכניס את כל התיקונים שהיו באתר בזמן התרגום.
הוצאת הוד-עמי תוכל לסייע לך בהורדת הקבצים מהאתר ,או בכל תקלה שתמצא בספר .הוצאת
הוד-עמי אינה נותנת שירותי סיוע בתכנות או בהבנת הכתוב .לשם כך פנה אל יועץ תכנות.
הקדמה xxix
p2p.Wrox.com
כדי להשתתף בדיונים עם המחבר ועמיתים ,הצטרף לפורומים של P2Pב.p2p.wrox.com -
הפורומים הם מערכת מבוססת אינטרנט שבה תוכל לפרסם הודעות שנושאן ספרי Wrox
וטכנולוגיות קשורות ,וליצור קשר עם קוראים אחרים ומשתמשי הטכנולוגיות .ניתן להיות מנוי
בפורומים ולקבל הודעות דואר אלקטרוני בתחומי העניין שלך בכל פעם שנוספים לפורומים
פרסומים חדשים.
ב p2p.wrox.com -תמצא כמה פורומים שיעזרו לך לא רק במהלך קריאת הספר ,אלא גם
בפיתוח היישומים שלך .כדי להצטרף לפורומים עקוב אחר הצעדים הבאים:
.1היכנס ל p2p.wrox.com -ולחץ על הקישור .Register Now
.2קרא את תנאי השימוש ולחץ .Agree
.3השלם את המידע הנדרש כדי להצטרף ,וכל מידע בחירה אחר שברצונך לספק ,ולחץ
.Submit
.4תקבל הודעת דואר אלקטרוני עם מידע שמתאר כיצד לאמת את החשבון שלך ,והשלם
את תהליך ההצטרפות.
אפשר לקרוא הודעות מהפורומים מבלי להצטרף ל ,P2P-אבל כדי לפרסם הודעות משלך אתה
חייב להצטרף.
לאחר ההצטרפות תוכל לפרסם הודעות חדשות ולהגיב על הודעות שפרסמו משתמשים אחרים.
את הפורום שעוסק בספר זה )באנגלית( תמצא תחת הקטגוריה Booksשזמינה מדף הבית על
ידי לחיצת View All Forumsבתפריט שמשמאל .תוכל לקרוא הודעות ברשת בכל שעה .אם
ברצונך שהודעות חדשות שנוגעות לפורום מסוים תישלחנה אליך בדואר אלקטרוני ,לחץ על
הסמל Subscribe to this Forumשליד שם הפורום ברשימת הפורומים.
למידע נוסף על השימוש ב Wrox P2P -קרא את ,P2P FAQsשמכיל תשובות לשאלות לגבי
פעולת תוכנת הפורומים ולשאלות נפוצות רבות שייחודיות ל P2P-ולספרי .Wroxכדי לקרוא
את ה FAQs-לחץ על הקישור FAQבדף כלשהו של .P2P
SP1
נספח ג' נותן היכרות עם התכונות של .Service Pack 1
מידע נוסף תוכל למצוא בספרון:
הוצאת הספרים .WROXתוכל למצוא אותו באתר של WROXבכתובת:
New Feature in ASP.NET 3.5 Service Pack 1
של
http://www.wrox.com/WileyCDA/WroxTitle/New-Features-in-ASP-NET-3-5-Service-Pack1.productCd-0470457341.html
xxxסדנת לימוד ASP.NET 3.5
על המחבר
Imar Spaanjaarsסיים את לימודיו האקדמיים בתחום ניהול הזמן
הפנוי ) (leisure Managementבהולנד ,אך במהרה החליף את תחום
התעניינותו ועיסוקו לתחום האינטרנט.
הוא עבד בחברה גדולה וכיום הוא מועסק בחברה Design ITבהולנד,
שבה הוא התמחה באינטרנט וביישומים הנלווים שנבנים בטכנולוגיית
התוכנה של מיקרוסופט ,כמו .ASP.NET 3.5בתפקידו כדירקטור טכני
ומעצב תוכנה הוא אחראי להקמת מערכות בינוניות וגדולות.
בתוקף מעמדו המקצועי הבכיר הוא מנחה את
החברה בשם זה בדנמרק.
Dynamicweb Netherland
שהינה סניף של
Imarכתב ספר על ASP.NET 2.0ועל ,Dreamweaverשניהם יצאו לאור על ידי .Wroxהוא אחד
התורמים הבכירים לפורום הידע .p2p.wrox.comניתן להתקשר איתו דרך האתר האישי
.http://imar.spaanjaars.com
על העורך המקצועי
היועץ המקצועי מאיר קרודו עובד בחברת ,Matrixומשמש כראש צוות
פיתוח ומוביל טכנולוגי בבנק לאומי .מאיר עוסק בפיתוח והטמעה של
יישומיים בנקאיים מתקדמים בסביבת מחשוב עם תשתיות הפיתוח של
מיקרוסופט ,ומשמש יועץ מקצועי לחברות בטכנולוגיות מיקרוסופט
חדשניות ,כגול ASP.NET ,SQL Serverו.Silverlight-
מאיר משמש כיועץ מקצועי לספרים נוספים בהוד-עמי ,וביניהם
" Visual C# 3.0סדנת לימוד".
על מחבר נספח ד'
אלכס גולש הינו מומחה בעל שם ב Silverlight-ו ,WPF-בעל תואר MVPשל מיקרוסופט .אלכס
יועץ בחברות שונות בארץ ובעולם ,מפתח ומטמיע RIAו ,Smart Client based solution -מדריך
ומנחה מאות מומחי ITבארץ ובעולם .אלכס מרצה מבוקש בנושאים WPF ,Silverlightו.XNA-
בבלוג שלו http://blogs.microsoft.co.il/blogs/alex_golesh/הוא יועץ לכותבים בנושא פיתוח
ב Siverlight-ונושאים אחרים.
הקדמה xxxi
פרק 3
עיצוב דפי האינטרנט שלך
הדפים שיצרת בשני הפרקים הקודמים נראו משעממים ולא אטרקטיביים ,משום שאינם
מעוצבים .עיצוב הדפים נעשה באמצעות השפה CSS .(Cascading Style Sheets) CSSהיא
השפה העיקרית הנהוגה לעריכה ולעיצוב של מידע באינטרנט ,ובכלל זה דפי אינטרנט בסביבת
.ASP.NETעם CSSבאפשרותך לשנות במהירות את התצוגה של דפי האינטרנט שלך ,ולהקנות
להם את המראה הרצוי.
למרות שגרסאות קודמות של Visual Web Developerחסרו כלים טובים לעבודה עם ,CSSהרי
לסביבה של Visual Web Developer 2008יש תמיכה מצוינת ב CSS-והיא מסוגלת לעצב דפים
עוד בזמן פיתוח בצורה הקרובה ביותר לזו שבה הם יוצגו בדפדפן .הכלים החדשים מאפשרים
לך ליצור בקלות עיצוב CSSמבלי שתצטרך לדעת ,לזכור או לעסוק בכל פרט קטן ב.CSS-
בפרק זה תלמד בהרחבה את הנושאים הבאים:
~
מהי CSSומדוע אתה זקוק לה.
~
איך נראית שפת CSSואיך לכתוב בה.
~
הדרכים השונות להוספת קוד CSSלדפי ASP.NETולקבצים חיצוניים.
~
הכלים הרבים שמציעה VWDלכתיבה מהירה של .CSS
כדי להבין את הרלוונטיות של CSSואת הצורך בה בפרויקטים הפועלים בסביבת ,ASP.NET
עליך להכיר תחילה את המגרעות של .HTMLהסעיף הבא דן בבעיות שכרוכות בשימוש
ב HTML-פשוט ,ואיך CSSמסוגלת להתגבר על בעיות אלו.
הערה :לימוד נוסף של CSSתמצא בספר " HTML & CSSלמפתחי אתרים באינטרנט" בהוצאת הוד‐עמי.
מדוע אתה צריך ?CSS
בראשית ימיו של האינטרנט ,דפי webהיו מורכבים בעיקר מטקסט ותמונות .הטקסט עוצב תוך
שימוש ב HTML-פשוט ותגיות ,כמו לדוגמה > <bכדי להגדיר טקסט מודגש )עבה( ,ו<font>-
כדי לקבוע את סוג הגופן ,גודלו וצבעו .המפתחים של יישומי אינטרנט הבינו עד מהרה
שדרושים להם כלים חזקים יותר כדי לעצב את הדפים שלהם ואמנם CSS ,נוצרה כדי לענות על
מגרעות HTMLבתחום עיצוב סגנון הדפים.
66
סדנת לימוד ASP.NET 3.5
בעיות בעריכה עם HTML
אחת הבעיות בשימוש ב HTML-לעריכה היא שקבוצת האפשרויות שמציעה HTMLלעיצוב
סגנון הדפים מוגבלת למדי .אתה יכול להשתמש בתגיות כמו > <b> ,<iו <font>-כדי לשנות
את ההופעה של טקסט ,ובמאפיינים כמו bgcolorכדי לשנות את צבע הרקע של אלמנטים של
.HTMLכמו כן ,עומדים לרשותך כמה מאפיינים שמאפשרים לשנות את הדרך שבה מופיעים
קישורים בדפים שלך.
ברור שקבוצת מאפיינים זו אינה עשירה מספיק לעיצוב דפי האינטרנט האטרקטיביים
שהמשתמשים שלך מצפים להם ודורשים אותם.
בעיה אחרת של HTMLהמשפיעה בצורה רבה על בניית דפי האינטרנט שלך ,היא הדרך שבה
משולב המידע על העיצוב בדף .כתוצאה מעיצוב זה ,כופה עליך HTMLלהטמיע את הנחיות
העיצוב כחלק ממסמך HTMLשלך ,והדבר מקשה על שימוש חוזר או שינוי העיצוב מאוחר
יותר .התבונן בדוגמה הבאה:
>"<p><font face="Arial" color="red" size="+1
This is red text, in an Arial type face and slightly larger than the default text
></font></p
הבעיה עם קטע קוד זה היא שאין הפרדה בין תגיות HTMLלבין המידע אשר מורה על דרך
הצגת התגיות .הנתונים ומידע העיצוב צריכים להיות נפרדים ,כדי שיהיה קל יותר לשנות אחד
מהם מבלי להשפיע על האחר.
> <pו<font>-
דמיין לעצמך שהאתר שלך מכיל 40דפים .ובכל דף נעשה שימוש בתגיות
כפסקה הראשונה .קוד שכזה קשה לתחזוקה .למשל ,מה יקרה כשאתה מחליט לשנות את צבע
הגופן מאדום לכחול כהה? ו/או קיבלת דרישה לשנות את הגופן ל Verdana-במקום ?Arial
במקרים כאלה היית צריך לעבור על כל דף ודף באתר שלך ולהכניס בו את השינויים הנדרשים.
פרט לעניין התחזוקה מתעוררת בעיה נוספת עם עיצוב - HTMLאינך יכול לשנות בקלות את
העיצוב בזמן שהדף מוצג בדפדפן .אם תשתמש ב HTML-שבקטע הקוד הקודם לא תהיה לך כל
דרך לאפשר למבקר באתר לשנות דברים ,כמו גודל הגופן וצבעו .אם ברצונך להציע למבקרים
באתר גרסה אלטרנטיבית של הדף ,עם גופן גדול יותר או בעל צבע אחר ,אתה צריך ליצור
עותק של הדף המקורי ולהכניס בו בעצמך את השינויים הנחוצים.
הבעיה האחרונה עם עיצוב HTMLהיא שסימני העריכה הנוספים בדף שלך מגדילים במידה
ניכרת את נפח הדף .דבר זה גורם להאטה בהורדת הדף והצגתו )תעבורת הרשת( ,מכיוון
שהמידע צריך להיטען עם כל דף באתר שלך .דבר זה גם מקשה על תחזוקת הדפים בזמן פיתוח
מכיוון שעליך לגלול דרך קבצי HTMLגדולים כדי למצוא את התוכן הדרוש לך.
לסיכום ,עיצוב עם HTMLסובל מהבעיות הבאות:
~
קבוצת המאפיינים של
על ידי הדפים שלך.
HTML
מגבילה באופן חמור את אפשרויות העיצוב שנדרשות
פרק :3עיצוב דפי האינטרנט שלך 67
~
נתונים ומידע תצוגה מעורבבים זה בזה באותו קובץ.
~
אין אפשרות קלה להחלפת העיצוב בדפדפן בזמן ריצה באופן דינמי.
~
התגיות ומאפייני העיצוב הנדרשים מגדילים את הדפים שלך ,והדבר גורם להאטה
בטעינתם ובהצגתם.
למרבה המזל מאפשרת לך CSSלהתגבר על כל הבעיות האלו.
כיצד פותרת CSSאת בעיות העיצוב
CSSתוכננה לעצב את דפי האינטרנט שלך כמעט בכל דרך אפשרית .היא מציעה מגוון עשיר
של אפשרויות לעיצוב דפי האינטרנט שלך ,כולל גופנים )גודל ,צבע ,משפחה וכו'( ,צבעים
וצבעי רקע ,גבולות סביב אלמנטים של ,HTMLהצבת אלמנטים בדף ועוד CSS .נתמכת על ידי
כל הדפדפנים העיקריים כיום ,ולכן היא השפה המקובלת להגדרת תצוגה של דפי אינטרנט,
ופופולרית מאוד בין מפתחי אינטרנט.
CSSמתגברת על בעיית ערבוב הנתונים ומידע התצוגה על ידי הגדרת כל מידע העיצוב
בקבצים חיצוניים .דפי ASPXאו HTMLשלך יכולים אז לפנות לקבצים אלה ,והדפדפן הוא זה
שמיישם את הסגנונות הנכונים .עם החלת הפרדה זו ,מסמך HTMLמכיל כעת את מה שאתה
רוצה להציג ,בעוד קובץ CSSמגדיר איך אתה רוצה להציג זאת .הפרדה זו מאפשרת לך לשנות,
או להחליף ,את אחד משני המסמכים בעוד שהאחר יישאר ללא שינוי .בסעיף הבא תראה כיצד
זה נעשה .בנוסף ,ניתן להציב קוד CSSבאופן ישיר בדף HTMLאו ,ASPXוכך באפשרותך
להוסיף קטעים קטנים של קוד CSSבדיוק במקום שאתה צריך אותם .כשאתה מציב את קוד
CSSישירות בדף HTMLאו ,ASPXעליך לגלות זהירות ,משום שכתוצאה מכך אתה מאבד את
הגמישות של שליטה על העיצוב ממקום מרכזי.
מכיוון שניתן להציב את כל קוד CSSבקובץ נפרד ,קל להציע למשתמש אפשרויות בחירה בין
סגנונות שונים ,לדוגמה סגנון עם גופן גדול יותר .אתה יכול ליצור עותק של גיליון הסגנון
החיצוני ,לערוך את השינויים הנדרשים ,ואז להציע למשתמש את גיליון הסגנון האלטרנטיבי.
בפרק ,6כאשר יידונו נושאי ,ASP.NETתראה כיצד זה פועל.
תועלת אחרת מקובץ גיליון סגנון נפרד היא הקטנת התעבורה ברשת .גיליונות סגנון אינם
משתנים בכל בקשה ,ולכן הדפדפן יכול לשמור עותק מקומי של גיליון הסגנון בפעם הראשונה
שהוא טוען אותו .מאותו רגע ואילך ,הדפדפן משתמש בעותק הנשמר במרחב הזיכרון שלו
במקום לבקש אותו מהשרת בכל בקשה .לפעמים הדבר עלול לפעול נגדך ,והדפדפן לא יטען
קבצי CSSהכוללים את השינויים העדכניים ביותר שלך .אם תמצא שהדפדפן אינו בוחר בקובץ
CSSעם השינויים שעשית ,השתמש בקיצור הדרך Ctrl+F5שבדפדפן )לא ב ,(VWD-כדי לקבל
עותק רענן מהשרת.
כעת ,כשהבנת מדוע CSSכה חשובה ,הגיע הזמן ללמוד איך היא נראית וכיצד להשתמש בה.
68
סדנת לימוד ASP.NET 3.5
מבוא לCSS-
מבחינת התחביר שלה CSS ,היא שפה קלה ללימוד .השפה מורכבת מכמה מושגים בלבד ולכן קל
יחסית להתחיל להשתמש בה .הארגון העולמי שמתחזק את תקן ,HTMLהWorld Wide ) W3C-
(Web Consortiumכולל תקן CSSבשלוש גרסאות שונות 2.1 ,1.0 :ו .3.0-מבין שלוש גרסאות
אלו ,גרסה 2.1היא המקובלת ביותר כיום .היא מכילה כל מה שמכילה גרסה ,1.0ואפשרויות
רבות מעבר לכך .בגרסה זו משתמשת ,VWDואותה היא יוצרת כברירת מחדל .גרסה 3.0נמצאת
כעת בפיתוח ,וצפוי שיעבור זמן מה לפני שהדפדפנים העיקריים יתמכו בה באופן גורף.
לפני שנתבונן בתחביר ,CSSרצוי להתבונן תחילה בדוגמה .בתרגיל הבא תתבקש לכתוב דף
ASPXפשוט שמכיל מעט CSSכדי לעצב את תוכן הדף .הדבר יעזור להבנת שפת CSSשעליה
נדון בפירוט מלא בסעיף הבא.
נסה זאת כתיבת קוד CSSהראשון שלך
בתרגיל זה תכתוב קוד CSSקצר שמשנה את עיצוב הכותרת ,ושתי פסקאות .בשלב זה תקודד
את הדף באופן ידני; בחלקו השני של פרק זה תלמד כיצד להשתמש בכלי CSSהזמינים
ב ,VWD-אשר הופכים את כתיבת CSSלפשוטה וקלה.
.1בפרויקט Planet Wroxצור קובץ חדש בתיקייה ,Demosוקרא לו .CssDemo.aspxעבור
תרגיל זה אין חשיבות לכך שתבחר קוד כלול או קוד ברקע ,כמו כן גם לשפת התכנות
של הדף אין חשיבות ,מכיוון שתשתמש בה רק בחלק הדף שמכיל סימני עריכה.
.2ודא שהדף מוצג ב ,Markup View -ואז אתר את התגית > <head/בדף .לפני תגית זו
הקלד את הקוד המוצלל שלהלן:
><title>Untitled Page</title
>"<style type="text/css
></style
></head
שים לב שברגע שהקלדת את סוגר הפתיחה הזוויתי )<( צצה רשימה שמאפשרת לך
לבחור בתגית > .<styleהדבר נכון גם לגבי המאפיין .typeהקלד את האותיות ty
והמאפיין typeייבחר עבורך מהרשימה .כל מה שעליך לעשות כדי להשלים את
המילה הוא להקיש Tabאו .Enterזכור שאותה עזרה זמינה גם עבור הערך text/css
של המאפיין .לשם כך בחר בערך מהרשימה והקש Tabאו ,Enterוהערך יוכנס עבורך
באופן אוטומטי כשהוא מוקף בגרשיים.
.3בין תגיות הפתיחה והסגירה > <styleהקלד את קוד CSSהמוצלל הבא:
>"<style type="text/css
h1
{
;font-size: 20px
;color: Green
}
פרק :3עיצוב דפי האינטרנט שלך 69
p
{
;color: Blue
;font-style: italic
}
.RightAligned
{
;text-align: right
}
></style
הקלד את הקוד בצורה מדויקת ,מכיוון ש CSS-מקפידה מאוד בענייני תחביר! הפריט
הראשון ברשימה הוא תגית h1שמיועדת לעיצוב סגנון כותרת ברמה הראשונה ,כדי
שהתווים שבה יהיו בגודל 20פיקסל ,והיא תוצג בגופן ירוק .שים לב לתו נקודתיים )(:
שבין font-sizeו ,20px-ולכך שהשורה נסגרת בנקודה-פסיק );(.
הפריט השני ברשימה מכיל את האות
האלמנטים > <pבדף.
p
ומגדיר את המראה והתחושה של כל
הפריט האחרון מתחיל בנקודה ) (.ולאחריו הטקסט .RightAlignedפריט זה משמש
ליישור לימין של קטעי טקסט מסוימים בדף.
.4גלול מעט מטה בדף עד שתראה את תגית הפתיחה > .<divמייד לאחר תגית זו הקלד
את הטקסט המוצלל הבא:
><div
><h1>Welcome to this CSS Demo page</h1
><p>CSS makes it super easy to style your pages.</p
>"<p class="RightAligned
With very little code, you can quickly change the looks of a page.
></p
></div
במקום להקליד קוד זה ישירות ,אתה יכול להשתמש בסרגל הכלים ,Formattingמתוך
,Design Viewכדי ליצור אלמנטים כמו > <h1ו .<p>-בינתיים תצטרך להקליד
" ,class="RightAlignedאבל בתרגילים הבאים ,תלמד איך לגרום ל IDE-לכתוב קוד זה
עבורך.
.5אם תעבור ל Design View -תבחין כי הטקסט שלך מוצג בהתאם להגדרת העיצוב
שקבעת באלמנט > <styleשל הדף .תרשים 3-1מציג את הדף ב Split View -ואתה
יכול לראות כעת את הקוד והעיצוב בו-זמנית.
הספר מודפס בשחור-לבן ולכן קשה להבחין בהבדלים בצבעי הגופנים .לעומת זאת ,ניתן
לראות בתרשים 3-1בבירור של <h1>-יש גופן גדול יותר מאשר לטקסט .בתרשים גם
רואים שכל הפסקאות )הן הרגילה והן המעוצבת עם " (class="RightAlignedמוצגות
70
סדנת לימוד ASP.NET 3.5
בגופן נטוי .לבסוף ,אתה יכול לראות שהפסקה האחרונה מיושרת לימין החלון ,מפני
שהמאפיין classבתגית הפסקה משתמש בהגדרת העיצוב .RightAligned
תרשים 3-1
אם אינך רואה את הפסקה האחרונה מוצמדת לגבול הימני של חלון המסמך ,ודא
שהקלדת נכון את RightAlignedבתגית > <styleובמאפיין .Classמכיוון ש CSS-רגישה
לרישיות ,יש הבדל בין RightAlignedל.rightAligned-
אם ברצונך להציג את הדף בדפדפן שלך ,הקש Ctrl+F5ואז ' VWDמעוררת' את שרת
האינטרנט המובנה ,פותחת את דפדפן ברירת המחדל שלך ,ומציגה את דף .CssDemo.aspx
הדף שאתה רואה בדפדפן זהה לתצוגה המקדימה שראית ב Design View -של Visual Web
.Developer
כיצד זה פועל
למרות שהקוד שהקלדת בתרגיל זה פשוט יחסית ,הרי ש"מאחורי הקלעים" של הדפדפן )וגם ב-
(Design Viewיש התרחשויות רבות שמטרתן לאפשר לדברים לקרות .התחלת את התרגיל על
ידי הוספת כמה סגנונות לקטע > <headשל הדף:
>"<style type="text/css
h1
{
;font-size: 20px
;color: Green
}
...
></style
התגית > <styleמשמשת לעטיפת גיליון הסגנון שמוטמע בדף ,כשהמאפיין typeשלה מוגדר
כ .text/css-בין התגיות > <styleנמצא בלוק קוד שמתחיל ב h1-ומסתיים בסוגר המסולסל
פרק :3עיצוב דפי האינטרנט שלך 71
) } ( .הבלוק נקרא rule setאו בפשטות ) ruleכלל( .הכלל מגדיר את התצוגה עבור כל
האלמנטים > <h1בדף שלך .ה <h1>-בראש בלוק הקוד נקרא ) selectorבורר( ותפקידו
להצביע על האלמנטים שלגביהם יחול כלל העיצוב .במקרה שלנו ,ה selector-ממופה ישירות
לאלמנט > <h1של ,HTMLאבל זמינים גם selectorsאחרים שתראה מאוחר יותר בסעיף זה.
תרשים 3-2מראה איך האלמנטים קשורים ביניהם.
תרשים 3-2
בין הסוגריים המסולסלים אתה רואה את מידע סגנון העיצוב שברצונך להחיל על הכותרת .כל
שורה בין הסוגריים המסולסלים נקראת הצהרה ) .(declarationהצהרה מורכבת ממאפיין
) (propertyשלאחריו נקודתיים ) (:ולאחריהן ערך ) .(valueהתו נקודה-פסיק );( בסוף ההצהרה
מפריד אותה מההצהרה הבאה ,והוא חייב להיות בכל ההצהרות ,פרט להצהרה האחרונה .עם
זאת ,מטעמי עקביות ,יהיה זה נוהג נכון לסיים את כל ההצהרות בנקודה ופסיק ,וכך תראה בכל
הדוגמאות הבאות שבספר.
כשהדפדפן טוען דף זה ,הוא קורא את הסגנונות שהגדרת בין תגיות > .<styleבכל פעם
שהדפדפן פוגש באלמנט HTMLשתואם את ה ,selector-הוא מחיל עליו את כללי CSS
הרלוונטיים לו .כך מוחלים הכללים שמופיעים בצעד 3על האלמנטים > <h1ו ,<p>-בהתאמה.
הדבר יגרום לכותרת להופיע בגופן גדול בצבע ירוק ,בעוד שהפסקה תוצג בצבע כחול וגופן נטוי.
אבל מדוע הופיעה הפסקה האחרונה בצבע כחול כשהיא מיושרת לימין? ב CSS-הכללים יכולים
לבוא ממקורות שונים .תגית > <pהאחרונה מקבלת את מידע הסגנון שלה מבורר pסטנדרטי
שבהגדרת הסגנון ,והוא זה שקבע לפסקה גופן כחול ונטוי .עם זאת ,בנוסף הוצמד לתגית ><p
דרך מאפיין Classסגנון נוסף בשם ,RightAlignedשגורם לטקסט להיות מיושר לימין החלון.
בסופו של דבר ,אלמנט > <pהאחרון מקבל את הכללים שלו בו-זמנית משני מקורות.
בסעיף הבא נתעמק הרבה יותר בתחביר ובמבנה של .CSS
שפת CSS
כפי שראית בתרגיל נסה זאת הקודם CSS ,היא למעשה אוסף של כללים .כלל הוא שילוב
כלשהו של selectorוהצהרה אחת או יותר המכילה מאפיין וערך .קרוב לוודאי שאתה מסוחרר
מעט מכל המונחים החדשים שהכרת בפסקאות האחרונות ,לפיכך תפגוש את רובם שוב בסעיף
הבא ,בשילוב הסבר מפורט ודוגמאות קוד שיראו לך למה הן משמשות וכיצד הן פועלות.
72
סדנת לימוד ASP.NET 3.5
פרק 5
תכנות דפי WebבASP.NET-
בפרקים הקודמים יצרת כמה טפסי Webשהכילו בעיקר פקדי שרת של ASP.NETושל קוד
HTMLפשוט .רק דוגמאות מעטות הכילו קוד ממשי שנכתב ב (VB.NET) Visual Basic.NET -או
ב ,C#-ורוב הקוד הזה היה פשוט למדי .עם זאת ,קידוד הוא מרכיב חשוב בכל אתר אינטרנט.
אמנם ,בהשוואה למה שנדרש בגרסאות הישנות ממשפחת 1.xשל סביבת ,NETאו בטכנולוגיות
אינטרנט אחרות כמו ASPהקלאסית או ,PHPהרי שהמספר הרב של פקדי השרת המתוחכמים
שעומדים לרשותך מקטין את כמות הקוד שאתה צריך לכתוב ,ועדיין ,היכולת לקרוא ,להבין
ולכתוב קוד היא נכס חיוני בערכת הכלים של מפתח אינטרנט.
בפרק זה תכיר את יסודות התכנות עבור יישומי אינטרנט .תלמד בהרחבה על הנושאים הבאים:
~
איך לעבוד עם אובייקטים ואוספים ) (collectionsבסביבת תכנות.
~
דרכים שונות לקבלת החלטות בקוד שלך.
~
האפשרויות ליצירת בלוקים של פונקציונליות לשימוש רב-פעמי.
~
דרכים שונות לכתיבת קוד מסודר ומתועד.
~
מה זה תכנות מוכוון עצמים וכיצד להשתמש בו לבניית היישומים שלך.
כמו כל שאר הדוגמאות בספר ,גם הדוגמאות בפרק זה מובאות בשתי השפות VB.NET :ו.C#-
לכל מושג או תיאוריה שמוצגים בפרק זה תראה ,בו-זמנית ,דוגמה ב VB.NET-ודוגמה ב.C# -
בחירת השפה המועדפת עליך תלויה בך בלבד.
כדי להשיג את המרב מהלימוד של פרק זה ,מומלץ לנסות את כל ,או לפחות את רוב ,דוגמאות
הקוד שמוצגות בפרק .קריאה והבנת קוד הן דבר אחד; לראות את הקוד פועל למעשה זה משהו
שונה לחלוטין .את רוב הדוגמאות ניתן לבחון עם דף ASPXפשוט .גרור פקד Labelופקד
Buttonאל הדף שלך ,לחץ לחיצה כפולה על הלחצן בתצוגת עיצוב ) ,(Design Viewואז הקלד
את הקוד הרלוונטי בשורה הפתוחה של בלוק הקוד שנוסף על ידי סביבת הפיתוח.
שים לב שכמה מהדוגמאות קוראות לקוד פיקטיבי שלא יפעל כהלכה .הן משמשות להמחשת
הנושאים הנדונים בלבד.
פרק :5תכנות דפי WebבASP.NET-
141
מבוא לתכנות
כדי להתחיל בתכנות חשוב להבין תחילה את המינוח המקובל ,שמשותף לכל המתכנתים בכל
שפות התכנות והיישומים .בהמשך הלימוד בפרק זה תכיר מספר גדול יחסית של מונחים
ומושגים .רוב המונחים מלווים בדוגמאות קוד ,כדי שתוכל לראות איך משתמשים בהם בקוד.
חשוב להבין שהפרק אינו מהווה מבוא שלם לתכנות .איננו עוסקים בכל פרט של שפת תכנות
זו או אחרת .במקום זאת ,נתמקד במושגי המפתח שעליך להבין כדי לבנות בהצלחה אתרי
אינטרנט לשימוש יום-יומי .לאחר שתבין את הנקודות העיקריות ,תמצא שקל לך יותר להעמיק
את הידע שלך בתכנות על ידי לימוד התכונות היותר מתקדמות של שפת התכנות המועדפת
עליך.
הערה :לימוד מקיף על תכנות ב‐ C#בעברית ,תמצא בספר Visual C# 3.0סדנת לימוד בהוצאת
הוד‐עמי.
הקוד שאתה עומד לכתוב ,בפרק זה ובפרקים הבאים ,ייתכן שיתווסף לקוד ברקע של דף ,web
או שיוצב כחלק מקובץ מסוג מחלקה שימוקם בתיקייה App_Codeשנדון בה בהמשך הפרק.
כאשר רכיב ASP.NET runtimeמעבד בקשה לדף שמכיל קוד ,הוא מהדר תחילה כל קוד שהוא
מוצא בדף ,בין אם זה קוד ברקע או קובץ מחלקה .קוד שעבר הידור משנה את צורתו משפת
תכנות קריאה על ידי בני אדם )כמו C#או (VB.NETלקוד שהמחשב מבין ומסוגל לבצע .תוצאת
תהליך הידור של אתר webבסביבת ASP.NETהוא קובץ אחד ,או יותר ,עם סיומת ,DLL
שמאוחסן בתיקייה זמנית במערכת שלך .תהליך הידור זה קורה רק בפעם הראשונה שהדף
מבוקש לאחר שהוכנסו בו שינויים .הבקשות הבאות לאותו דף מתמלאות על ידי שימוש חוזר
באותו .DLLלמרבה המזל ,באתרי אינטרנט בסביבת ,ASP.NETההידור מתבצע ברקע ,באופן
שאינך צריך לטפל בו.
בתחילה נתבונן בסוגי הנתונים ובמשתנים השונים ,מכיוון שהם אבני הבניין של כל שפת
תכנות .כל יישום .NETמשתמש בסוגי נתונים שונים ,שלעתים קרובות מאוחסנים במשתנים.
בסעיף הבא נלמד עליהם.
סוגי נתונים ומשתנים
כשאתה חושב על נתונים בפעם הראשונה ,ייתכן שלא תבין שלכל יחידת נתונים יש סיווג
כלשהו .אתה עשוי לחשוב שמחשב יאחסן את המילים " "Hello Worldבדיוק באותה צורה כמו
שיאחסן את התאריך הנוכחי או את הספרה " ."6אולם ,כדי לעבוד עם נתונים ביעילות ,שפות
תכנות מגדירות סוגי נתונים ) (data typesשונים ,כשכל סוג נתונים מוגבל לסוג מסוים של
מידע .בסביבת ASP.NETיש רשימה ארוכה של סוגי נתונים שמאפשרים לעבוד עם מספרים
)כמו Short ,Integerו ,(Double-מחרוזות טקסט ) Charו ,(String-תאריכים ) ,(DateTimeערך
בוליאני (Boolean) true/falseועוד .רשימה של סוגי הנתונים הנפוצים נמצאת בהמשך הסעיף.
לכל סוג עיקרי של נתונים יש סוג נתונים מיוחד .כדי לעבוד עם סוג זה ,אתה יכול לאחסן אותו
במשתנה ) (variableשעליך להכריז ) (declareעליו כשאתה משתמש בסוג הנתונים בפעם
142
סדנת לימוד ASP.NET 3.5
הראשונה .ב VB.NET-תשתמש במבנה הכרזה ) Dim myVariable As DataTypeכאשר
myVariableהינו שם המשתנה ו DataType-הוא סוג המשתנה( ,בשעה שב C#-תשתמש בהכרזה
) DataType myVariableגם כאן DataType ,הוא סוג המשתנה ו myVariable-הינו שם המשתנה(.
הדוגמה הבאה מראה איך להכריז על שני משתנים :אחד לאחסון מספר והשני לאחסון מחרוזת
או קטע טקסט.
VB.NET
הכרזה על סוג משתנה מספרי שלם בטווח מספרים בינוני בשם' distanceInMiles :
Dim distanceInMiles As Integer
הכרזה על סוג משתנה מחרוזת בשם' firstName :
Dim firstName As String
C#
הכרזה על סוג משתנה מספרי שלם בטווח מספרים בינוני בשם// distanceInMiles :
;int distanceInMiles
הכרזה על סוג משתנה מחרוזת בשם// firstName :
;string firstName
לאחר ההכרזה על משתנה ,תוכל להקצות לו ערך .סוגים כמו מספרים עשרוניים ובוליאניים
תוכל להקצות ישירות למשתנה .כדי להקצות מחרוזת ) (Stringלמשתנה עליך להקיף אותה
בגרשיים )"(.
VB.NET
Dim distanceInMiles As Integer
distanceInMiles = 437
Dim firstName As String
"firstName = "Sara
C#
;int distanceInMiles
;distanceInMiles = 437
;string firstName
;"firstName = "Sara
במקום הכרזה והקצאת ערך בשתי פעולות נפרדות כמו בדוגמאות הקודמות ,באפשרותך
להכריז ומייד להקצות ערך בהוראה אחת בלבד .ראה דוגמאות אלו:
VB.NET
Dim distanceInMiles As Integer = 437
C#
;int distanceInMiles = 437
פרק :5תכנות דפי WebבASP.NET-
143
למרות ששם משתנה יכול להיות כל שם שעולה בדעתך ,מומלץ לקבוע לכל משתנה שם בעל
משמעות שמתאר את מטרתו .לדוגמה ,מחרוזת שאמורה להחזיק שם פרטי תיקרא ,firstName
ומשתנה שמחזיק את הגיל ייקרא .ageכדי לעזור לך מאוחר יותר למצוא בקוד את סוג
המשתנה ,הרי ש VWD-וכל הכלים האחרים ב ,Visual Studio -מציגים תיאור של סוג המשתנה
כשאתה עובר על פני משתנה בעורך הקוד .דבר זה הופך את זיהוי סוג המשתנה לקל ביותר.
תרשים 5-1מראה שהמשתנה distanceInMilesבדוגמה של C#הוא מסוג .int
תרשים 5-1
מומלץ לא להוסיף לשם המשתנה קידומת של כמה אותיות ,כדי לציין את סוגו .לדוגמה ,קרא
למשתנה מחרוזת מסוג stringהמחזיק שם firstName :ולא ,sFirstNameההמלצה היא כדי
שהקוד שלך יהיה קל יותר לקריאה ) ageיותר קריא מאשר (iAgeוקל יותר לתחזוקה.
סביבת .NETשל מיקרוסופט )ולכן גם סביבת (ASP.NETתומכת במספר גדול של שפות תכנות
שונות ,ובכללן C# ,VB.NETואחרות .כל השפות האלו מסוגלות לתקשר זו עם זו .לדוגמה ,אתה
יכול לכתוב קוד ב ,C#-להשתמש ב Visual C# Express Edition -כדי להדר אותו לקובץ ,dll
ואז להשתמש בקובץ זה ביישום webשהשפה העיקרית שלו היא .VB.NETיכולת זו קיימת
הודות למנגנון המאפשר לכל שפות התכנות בסביבת .NETלהבין זו את זו .מנגנון זה קרוי CTS
) (Common Type Systemותפקידו להגדיר את סוגי הנתונים שנגישים לכל השפות שתואמות
לה .כל שפה חופשית להגדיר סוגים שונים שהם ,ביסודו של דבר ,קיצורי דרך או שמות נרדפים
לסוגי התיאור הקיימים בסביבת .NETכך ,לדוגמה אם CTSמגדירה סוג בשם ,System.Int32
שפה כמו C#תעדיף לקרוא לסוג זה intכדי להקל על מפתח התוכנה להשתמש בו.
הטבלה הבאה מציגה את סוגי המשתנים הנפוצים ביותר בסביבת .NETהמוגדרים על ידי ,CTS
ואת השמות הנרדפים שבהם משתמשות C#ו .VB.NET-הטבלה מפרטת גם את טווח המשתנים
ומסבירה למה הם משמשים.
תיאור סוג המשתנה
VB.NET
C#
.NET
אחסון של כמות מספרים קטנה ,בעלי ערכים
חיוביים מ 0-עד .255כאשר לא מוקצה כל
ערך במפורש ,ברירת המחדל היא .0
Byte
byte
System.Byte
אחסון של מספרים שלמים שערכיהם בין
-32,768לבין .32,767ברירת המחדל היא .0
Short
short
System.Int16
144
סדנת לימוד ASP.NET 3.5
תיאור סוג המשתנה
VB.NET
.NET
C#
אחסון של מספרים שלמים שערכיהם בין
-2,147,483,648לבין .2,147,483,647
ברירת המחדל היא .0
Integer
int
System.Int32
אחסון של מספרים שלמים שערכיהם בין
-9,223,372,036,854,775,808לבין
.9,223,372,036,854,775,807
ברירת המחדל היא .0
Long
long
System.Int64
אחסון של מספרים שלמים שערכיהם בין
-3.4028235E+38לבין .3.4028235E+38
ברירת המחדל היא .0
Single
float
System.Single
אחסון של מספרים לא שלמים .הערכים בעלי
השברים אינם מדויקים כמו הערכים השלמים,
אולם כאשר אין צורך בדיוק מרבי קיצוני,
עדיף להשתמש בסוג Doubleעל פני ,Decimal
מכיוון שהסוג Doubleמהיר יותר בחישובים.
ברירת המחדל היא .0.0
Double
double
System.Double
אחסון של מספרים לא שלמים פשוטים במידת
דיוק גבוהה .ברירת המחדל היא .0
Decimal
decimal
System.Decimal
אחסון של ערכים בוליאניים) True :ב,(VB-
) trueב (C#-או ) Falseב) false ,(VB-ב.(C#-
Boolean
bool
System.Boolean
ב VB.NET -יש שם נרדף ) (aliasעבור
System.DateTimeלאחסון נתוני תאריך וזמן.
C#אינה מגדירה שם נרדף עבור סוג נתונים זה,
ולכן השתמש בשם System.DateTimeבלבד.
ברירת המחדל היא1/1/0001: 12:00 am :
Date
n/a
System.DateTime
אחסון תו יחיד .ברירת המחדל ב VB-היא
,Nothingאו nullב.C#-
Char
char
System.Char
אחסון מחרוזת טקסט באורך עד 2מיליון
תווים .ברירת המחדל ב VB-היא ,Nothingאו
nullב.C#-
String
string
System.String
אחסון מספרים בערכים נמוכים ,בטווח -128
עד .127ברירת המחדל היא .0
SByte
sbyte
System.SByte
פרק :5תכנות דפי WebבASP.NET-
145
תיאור סוג המשתנה
דומה לסוג הנתונים ,System.Int16אולם סוג
זה יכול לאחסן ערכים ללא סימן מינוס ),(-
בין 0לבין .65,535
ברירת המחדל היא .0סוגי הנתונים האחרים
בעלי התחילית Uגם הם ערכים ללא סימן.
VB.NET
C#
.NET
UShort
ushort
System.UInt16
יכולת אחסון של מספרים שלמים שערכיהם
בין 0לבין .4,294,967,295
ברירת המחדל היא .0
UInteger
uint
System.UInt32
יכולת אחסון של מספרים שלמים שערכיהם
בין 0לבין .18,446,744,073,709,551,615
ברירת המחדל היא .0
ULong
ulong
System.UInt64
זהו סוג הראשי ,האב של כל הסוגים המקובלים
ב .NET-כולל את סוגי CTSשאתה עשוי
להגדיר בעצמך .כל סוג נתונים הוא גם
אובייקט ,כפי שתלמד מאוחר יותר בספר זה.
ברירת המחדל ב VB-היא ,Nothingאו null
ב.C#-
Object
object
System.Object
לעתים צריך להמיר נתונים מסוג אחד לאחר .לדוגמה ,ייתכן שתקבל ערך
מסוים ,שאתה צריך לפנות אליו כ .Double-תוכל לעשות זאת בכמה דרכים.
Integer
ממקור
המרת סוגי נתונים
הדרך הנפוצה ביותר להמיר סוג נתונים אחד לאחר היא להמיר אותו ל .String-יישומי אינטרנט
משתמשים בסוגי מחרוזת בכל מקום .לדוגמה ,נתון Textשמוחזר מ TextBox-הוא ,Stringוכך
גם SelectedValueשל DropDownListהוא מחרוזת .כדי להמיר Objectל String-אתה יכול
לקרוא לשיטה )( ToStringשלו .כל אובייקט בעולם של .NETתומך בשיטה זו ,אם כי
ההתנהגות המדויקת יכולה להיות שונה בכל אובייקט .בשלב זה חשוב להבין ש ToString() -זו
שיטה ) - (methodאו פעולה -על אובייקט כמו Stringאו ,Doubleואפילו על אובייקט האב
Objectעצמו .בהמשך הפרק ,כאשר נדון בנושא תכנות מוכוון אובייקטים ),(object-oriented
תלמד יותר על שיטות ואובייקטים.
השימוש ב ToString() -קל ופשוט ,כפי שמדגימה הדוגמה הבאה שכותבת את התאריך והשעה
הנוכחיים למשתנה .Label
הערה :זכור שכדי לנסות את דוגמאות הקוד עליך ליצור דף חדש בתיקייה ,Demosלהוסיף Labelו‐Button
לדף ,ללחוץ לחיצה כפולה על הלחצן ב‐ ,Design Viewלהוסיף את הקוד הבא ,ואז להקיש .Ctrl+F5
146
סדנת לימוד ASP.NET 3.5
לאחר שתסתיים טעינת הדף ,לחץ על הלחצן והקוד יתבצע .אתה צריך את הפקד Labelמכיוון
שכמה מדוגמאות הקוד כותבות מעט טקסט לדף.
VB.NET
)(Label1.Text = System.DateTime.Now.ToString
C#
;)(Label1.Text = System.DateTime.Now.ToString
דרך אחרת להמיר סוגי נתונים היא שימוש במחלקה .Convertמחלקה זו מכילה פונקציונליות
מתאימה להמרת סוגי נתונים רבים לסוגים אחרים .להלן דוגמה פשוטה של המרת String
שמכיל ערך שנראה כמו Booleanלסוג Booleanאמיתי:
VB.NET
מחזיר ערך ' True
)"Dim myBoolean1 As Boolean = Convert.ToBoolean("True
מחזיר ערך ' False
)"Dim myBoolean2 As Boolean = Convert.ToBoolean("False
C#
מחזיר ערך // true
;)"bool myBoolean1 = Convert.ToBoolean("True
מחזיר ערך // false
;)"bool myBoolean2 = Convert.ToBoolean("False
דרך נוספת להמיר סוג אחד לאחר היא על ידי שימוש ב .casting-עם castingאתה למעשה
כופה סוג מסוים להיות לאחר; זאת בשונה מהמרה ,שבה הערך היסודי של סוג נתונים עובר
שינוי לערך חדש.
castingפועלת רק על סוגים תואמים .לדוגמה ,אינך יכול לבצע castingשל DateTimeלתוך
.Integerאתה כן יכול לבצע castingבין סוגים דומים ,כמו Doubleלתוך Integerאו String
לתוך .Objectההיפוך של הדוגמה האחרונה אינו תמיד נכון .מוקדם יותר אמרתי שכל סוג
נתונים בסביבת NETמבוסס על סוג הנתונים .Objectפירוש הדבר הוא ,לדוגמה ,ש String-הוא
.Objectעם זאת ,לא כל Objectהוא גם .Stringזכור זאת כשאתה מנסה לבצע castingשל סוג
אחד לאחר ומקבל שגיאת הידור .בפרקים מאוחרים יותר בספר תלמד כיצד לבצע castingשל
סוגים תואמים זה לזה.
VB.NETמעמידה לרשותך כמה דרכים לביצוע castingשל סוג אחד לאחר .ראשית ,אתה יכול
להשתמש בשיטות CTypeו .DirectCast -שימוש ב CType-תאפשר לך גמישות רבה יותר בכך
שהיא מאפשרת לך לבצע castingבין שני אובייקטים שנראים דומים .לעומת זאתDirectCast ,
מאפשרת להמיר רק בין סוגים תואמים ,אבל ביצועיה טובים יותר במידת מה .הדוגמה הבאה,
ב ,VB.NET-מראה כיצד זה נעשה:
Dim o1 As Object = 1
יעבוד ,כיוון שמשתנה o1הינו מסוג ' Integer
)Dim i1 As Integer = DirectCast(o1, Integer
יעבוד ,כיוון שמשתנה o1הינו מסוג ' Integer
)Dim i2 As Integer = CType(o1, Integer
Dim o2 As Double = 1
ייכשל ,כיוון שמשתנה o2הינו מסוג ' Integer
)Dim i3 As Integer = DirectCast(o2, Integer
)Dim i4 As Integer = CType(o2, Integer
יעבוד ,כיוון שמשתנה o2מחזיק ערך שנראה כמו ערך מסוג ' Integer
פרק :5תכנות דפי WebבASP.NET-
147
בחלק הראשון של הדוגמה ,מוכרז אובייקט בשם o1ומוקצה לו הסוג Integerוערך .1למרות
ש o1-נראה כאובייקט ,הערך היסודי שלו הוא .Integerכשקוראים ל ,DirectCast-פעולת
castingמצליחה ,מכיוון ש ,o1-אחרי הכל ,הוא למעשה .Integer
בחלק השני של הדוגמה ,מוכרז אובייקט בשם o2כ ,Double-זהו סוג נומרי שנראה דומה מעט
ל Integer-אבל אינו ממש כזה .במקרה זה נכשלת הקריאה ל DirectCast-מכיוון שלא ניתן
לבצע castingשל Doubleל .Integer-לעומת זאת CType ,תפעל היטב מכיוון שהערכים
היסודיים של o2נראים כ Integer-ולכן ניתן לבצע castingשלהם ל.Integer-
האפשרות השלישית לביצוע castingב VB.NET-היא להשתמש במילת המפתח ,TryCastשדומה
במקצת לשתי האפשרויות הקודמות .כאשר לא ניתן לבצע castingשל אובייקט בצורה נכונה,
TryCastמחזירה ,Nothingבעוד DirectCastו CType-גורמות לכישלון של הקוד.
C#מציעה שתי דרכים לביצוע castingשל אובייקטים .הדרך הנפוצה ביותר היא לשים את סוג
הנתונים בסוגריים בחזית הביטוי שברצונך לעצב:
;object o1 = 1
עובד //
;int i1 = (int)o1
;double o2 = 1
עובד //
;int i2 = (int)o2
לחילופין ,אתה יכול להשתמש במילת המפתח ,asשפעולתה דומה לזו של TryCastב,VB.NET-
במובן זה שהקוד אינו נכשל אם ה casting-אינו מצליח .דוגמת הקוד הבאה מראה שאינך יכול
להמיר Integerל) ArrayList-שאותו תפגוש מאוחר יותר בפרק( .במקום להיכשל ,המשתנה
myListמכיל את הערך .null
;object o1 = 1
הנתון אינו מוחלף ,אך גם לא תתקבל שגיאה //
;ArrayList myList = o1 as ArrayList
בפרקים הבאים בספר נמשיך ונפגוש בהמרה והחלפה.
שימוש במערכים ) (Arraysואוספים )(Collections
סוגי הנתונים שפגשת עד כה היו ברורים וחד משמעיים באופן יחסי ,ומורכבים מאובייקט אחד.
לדוגמה ,אחסנת ערך של Trueאו Falseבסוג ,Booleanואחסנת מספר כמו 123בסוג .Integer
אבל מה יקרה אם יתעורר הצורך לאחסן מספרים שלמים רבים ,כקבוצה? צורך כזה מתעורר,
למשל ,כאשר רוצים לאחסן את ציון הקודקודים של צורה גרפית מורכבת כגון מצולע .ומה
יקרה כשתרצה לאחסן במשתנה אחד את התפקידים ושמות המנהלים בארגון שלך ,כדי שתוכל
להציגם בדף אינטרנט? זה המקום שבו מערכים ואוספים באים לעזרתך.
הגדרה ועבודה עם מערכים )(Arrays
אתה יכול לחשוב על מערך כעל שק גדול ,תיבה ,או רשימה שמכילים עצמים או דברים מאותו
הסוג .סוג הנתונים של כל פריט במערך מוגדר כאשר אתה מכריז על המערך .כל פריט במערך
148
סדנת לימוד ASP.NET 3.5
החלת ערכות נושא
יש שלוש אפשרויות להחיל ערכת נושא על אתר :ברמת הדף בהנחיה ,Pageברמת האתר על
ידי שינוי הקובץ ,web.configועל ידי תכנות.
~
הגדרת ערכת הנושא ברמת הדף .קל להגדיר
הדף :הגדר בהנחיה Pageשל הדף את המאפיין הרצוי.
Theme
או
StyleSheetTheme
ברמת
"<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb
>Inherits="_Default" Theme="DarkGrey" %
כדי להחיל ערכת נושא שהגדרותיה יכולות להידרס על ידי הדף ,החלף את המאפיין
Themeב .StyleSheetTheme-ברגע שתקליד "= ,Themeתציג VWDאת רשימת כל
ערכות הנושא שהיא מוצאת בתיקייה .App_Themeראה תרשים .6-13
תרשים 6-13
~
הגדרת ערכת הנושא ברמת האתר .כדי לאכוף ערכת נושא באתר כולו ,אפשר להגדיר
את הערכה בקובץ .web.configכדי לעשות זאת :פתח את הקובץ ,web.configאתר את
האלמנט > ,<pagesוהוסף לו את התכונה :theme
>"<pages theme="DarkGrey
...
></pages
מכיוון ש XML-בקובץ web.configרגישה לרישיות ,ודא שאתה מקליד themeבאותיות
רגילות בלבד.
~
הגדרת ערכות נושא בתכנות .הדרך השלישית להגדרת ערכת נושא היא באמצעות
קוד ,כלומר תכנות .בגלל הדרך שבה פועלת ערכת נושא ,עליך לעשות זאת מוקדם
במחזור החיים של הדף .בתרגיל מאוחר יותר תראה כיצד זה פועל.
תרגיל נסה זאת הבא מראה כיצד פועלות ערכות נושא .תלמד כיצד ליצור ערכה ,להוסיף את
הוראות CSSהדרושות ,ולהגדיר את תצורת היישום כדי שישתמש בערכת הנושא החדשה.
נסה זאת יצירת ערכת נושא חדשה עבור אתר אינטרנט
בתרגיל זה תיצור שתי ערכות נושא Monochrome :ו .DarkGrey-לכל ערכה תוסיף את העיצוב
והעריכה של ,CSSשיחולו על כל האתר באופן אוטומטי .תגדיר גם את האתר כך שישתמש
באחת משתי הערכות ,ואז תעבור לערכה השנייה כדי לראות את ההבדלים.
פרק :6יצירת אתרי Webבעלי מראה עקבי 227
.1הוסף לאתר את התיקייה המיוחדת .App_Themesכדי לעשות זאת :לחץ לחיצה ימנית
על הפרויקט בסייר הפתרון ,ובחר .Theme ← Add ASP.NET Folderפעולה זו תיצור
את התיקייה ,App_Themesוגם תגרום לכך שמייד תיווצר גם תת-תיקייה בשם
) Theme1ברירת המחדל( לערכת הנושא .הקלד Monochromeכשם חדש במקום שם
ברירת המחדל .סייר הפתרון אמור להיראות עכשיו כמו בתרשים .6-14
.2העבר את הקובץ Styles.cssמהתיקייה Stylesלתיקייה החדשה .Monochromeאתה
יכול לגרור את הקובץ ישירות אל התיקייה החדשה ,או להשתמש ב Ctrl+X-כדי לגזור
את הקובץ ,ללחוץ על התיקייה ,Monochromeולהקיש Ctrl+Vכדי להדביקו בתוכה.
עזוב את התיקייה הריקה ,Stylesנשתמש בה שוב מאוחר יותר.
תרשים 6-14
מStyles.css-
.3שנה את שם הקובץ
לראות בבהירות מאין מגיע קוד .CSS
ל ,Monochrome.css-כדי שמאוחר יותר תוכל
.4מכיוון שהעיצוב והעריכה העיקריים יישלטו מכאן והלאה על ידי ערכת הנושא ,אין
עוד צורך שהאלמנט > <linkבקטע > <headשל הדף הראשי יצביע על קובץ CSS
הישן ,ואפשר להסיר אותו .לשם כך :פתח את הדף הראשי ,עבור לMarkup View -
והסר מהקוד את השורה המוצללת הבאה.
>"<head runat="server
><title>Welcome to Planet Wrox</title
>"<asp:ContentPlaceHolder id="head" runat="server
></asp:ContentPlaceHolder
><link href="../Styles/Styles.css" rel="stylesheet" type="text/css" /
></head
.5הצעד הבא הוא להחיל את ערכת הנושא על האתר כולו .כדי לעשות זאת :פתח את
הקובץ web.configבשורש האתר ,אתר את האלמנט > <pagesוהוסף את התכונה .theme
>"<pages theme="Monochrome
.6כדי לבדוק את ערכת הנושא ,שמור את כל השינויים ובקש את הדף
בדפדפן .עיצוב האתר חייב להיות זהה למה שהיה .אם מתקבלת הודעת שגיאה על
כותרת דף לא חוקית ,חזור ל Visual Web Developer -ושנה את התכונה Titleשל
ההנחיה Pageשל Default.aspxלמשהו כמו למשל."Welcome to Planet Wrox" :
Default.aspx
228
סדנת לימוד ASP.NET 3.5
~
במקום התקשרות לקובץ CSSמהדף הראשי ,קוד CSSכלול עכשיו במקור הדף
באמצעות ערכת הנושא שהוגדרה בקובץ .web.configכדי לראות כיצד זה
פועל ,פתח בדפדפן את קוד HTMLהמקורי של הדף .בראש תראה את הקוד
הבא )העיצוב והעריכה שונו מעט כדי לשפר את הקריאות(.
>"<html xmlns="http://www.w3.org/1999/xhtml
><head
><title>Untitled Page</title
"<link href="App_Themes/Monochrome/Monochrome.css
>type="text/css" rel="stylesheet" /
></head
><body
~
שים לב שלקטע > <headשל הדף הוכנס קישור מתיקיית ערכת הנושא
Monochromeאל גיליון הסגנון ASP.NET runtime .עושה זאת לכל קובץ css
שהוא מוצא בתיקייה של ערכת הנושא הפעילה .כדי למנוע מהדפדפן לכלול
ולטעון קבצים לא נחוצים ,עליך לוודא שתיקיית ערכת הנושא נקייה .כמו כן
תן את הדעת לכך שה <link>-התווסף בדיוק לפני תגית הסגירה >.</head
הדבר מבטיח שקובץ הערכה יתווסף לאחר כל שאר הקבצים שאולי הוספת
בעצמך )למשל באמצעות הדף הראשי( .הדבר נוגד את האופן שבו פועלת
התכונה .styleSheetThemeמכיוון שסוג זה של ערכת נושא מאפשר להגדרות
שלו להידרס ,הוא מיובא בראש הקובץ .על ידי כך ניתן מרחב פעולה לקבצי
CSSאחרים שבאים בעקבותיו לשנות את המראה והתחושה של הדף.
.7חזור אל Visual Web Developerופתח את קובץ הדף הראשי ב .Design View -שים לב
שכל העיצוב נעלם ו VWD-מציגה עכשיו שוב את העיצוב והעריכה הבסיסיים של
הדף .לרוע המזל VWD ,אינה מציגה את ערכת הנושא שהגדרת תוך שימוש בתכונה
.themeאפשר להתגבר על מגבלה זו על ידי הגדרת styleSheetThemeבמקום .theme
כדי לעשות זאת :פתח שוב את הקובץ ,web.configאתר את האלמנט > <pagesוהוסף
את התכונה הבאה:
>"<pages theme="Monochrome" styleSheetTheme="Monochrome
.8שמור את כל השינויים שבוצעו ב ,web.config-סגור את הדף הראשי ופתח אותו שוב,
ועבור ל .Design View -תראה שכעת VWDמחילה על הדפים את מידע העיצוב הנכון.
.9כדי להוסיף ערכת נושא חדשה לאתר ,צור תיקייה חדשה תחת App_Themesוקרא לה
.DarkGreyפתח את התיקייה שממנה שלפת את הקוד הנטען שמגיע עם הספר .אם עקבת
אחר ההוראות בפרק ההקדמה ,תיקייה זו צריכה להיות ב .C:\BegASPNET\Resources-פתח
את התיקייה Chapter 06ואחר כך את התיקייה .DarkGreyגרור את הקובץ DarkGrey.css
מסייר הפתרון אל תיקיית ערכת הנושא DarkGreyב .VWD-סייר הפתרון צריך כעת להיות
דומה לתרשים .6-15
בתרגיל מאוחר יותר תוסיף את התמונות שקובץ CSSפונה אליהן.
פרק :6יצירת אתרי Webבעלי מראה עקבי 229
תרשים 6-15
.10פתח את הקובץ web.configפעם נוספת ,ושנה את שני המופעים של
באלמנט > <pagesל .DarkGrey-שמור את השינויים שוב והקש .Ctrl+F5במקום
הערכה Monochromeהירקרקה ,תראה עכשיו את האתר כשהערכה DarkGreyמוחלת
עליו ,כפי שמוצג בתרשים .6-16
Monochrome
תרשים 6-16
כיצד זה פועל
בתרגיל זה החלת את ערכת הנושא Monochromeעל ידי שינוי האלמנט > <pagesבקובץ
.web.configכשרכיב runtimeרואה שערכת נושא פעילה ,הוא סורק את תיקיית הערכה ומחפש
קבצי ,cssוכולל בקטע > <headשל הדף קישור לכל הקבצים מסוג זה שמצא .במקרה של
ערכת הנושא Monochromeהוא מוצא את הקובץ Monochrome.cssומוסיף אותו באופן
אוטומטי לקטע > .<headתהליך זהה קרה כששינית את הערכה ל.DarkGrey-
כדי לאפשר תמיכה בזמן עיצוב ב ,Visual Web Developer -עליך לשנות את
גם בקובץ .web.configהחיסרון היחיד של צעד זה הוא שקובץ CSSהרלוונטי ייכלל עכשיו
פעמיים :פעם אחת עבור Themeופעם שנייה עבור .styleSheetThemeמכיוון שאותו קובץ
בדיוק נכלל פעמיים ,הדבר אינו משפיע על העיצוב והעריכה של האתר .כל הבוררים
) (selectorsבקובץ השני מבטלים את אלה של הקובץ הראשון .עם זאת ,אם אתה רואה בכפילות
styleSheetTheme
230
סדנת לימוד ASP.NET 3.5
זו בזבוז של משאב המחשב ,מחק את התכונה
שהאתר עולה לאוויר.
styleSheetTheme
מהקובץ
web.config
לפני
העיצוב והעריכה של הדף השתנו באופן קיצוני כתוצאה מקוד CSSשבקובץ .DarkGrey.cssאם
ברצונך לדעת איזה קוד CSSמכיל הקובץ ,ואיזה אלמנטים בדף שונו על ידו ,פתח את הקובץ
ב .VWD-יש בו הערות רבות שמתארות כל בורר לפרטיו.
הרחבת ערכות נושא
פרט לקבצי cssו) skins-שבהם נדון לקראת סוף הפרק( ,ערכת נושא יכולה להכיל גם תמונות.
השימוש הנפוץ ביותר של תמונות ערכת נושא הוא בהתייחסות אליהן מ .CSS-כדי שהשימוש
בהן יהיה יעיל חשוב להבין כיצד CSSמתייחס לתמונות.
בהתאם לעיצוב ,החיפוש אחר תמונה שבורר CSSמתייחס אליה הינו יחסי למיקום של קובץ
,CSSאלא אם כן אתה קובע נתיב חיפוש שמתחיל בלוכסן נטוי קדימה ) (/שמציין את שורש
האתר .התבונן למשל ,בתיקייה App_Themesשמוצגת בתרשים .6-17
תרשים 6-17
כדי להתייחס לקובץ MenuBackground.jpgשבתיקייה Imagesשל ערכת הנושא ,Monochrome
תוכל להוסיף את קוד CSSהבא לקובץ :Monochrome.css
#MenuWrapper
{
;)background-image: url(Images/MenuBackground.jpg
}
אם תרצה להתייחס לתמונה בתיקייה Imagesשבשורש האתר ,תשתמש בקוד CSSהבא:
;)background-image: url(/Images/MenuBackground.jpg
שים לב ללוכסן הנטוי קדימה בחזית נתיב התמונה ,לציון שורש האתר .התחביר האחרון
שימושי כשברצונך לשתף תמונות בין ערכות נושא שונות .שים את התמונות בתיקייה שמחוץ
פרק :6יצירת אתרי Webבעלי מראה עקבי 231
פרק 10
ASP.NET AJAX
הנושא "החם" בשנים האחרונות בתחום פיתוח webהוא ,ללא ספק) Ajax ,קיצור של
.(Asynchronous JavaScript And Xmlלמרות שהטכנולוגיות שמניעות את Ajaxאינן חדשות
ונמצאות בשוק כבר כמה שנים ,הרי שרק בתחילת 2005הן זכו לשם הרשמי .שימוש בAjax-
מאפשר לדפי צד-לקוח להחליף נתונים עם השרת על ידי קריאות אסנכרוניות .קרוב לוודאי
שהתכונה הפופולרית ביותר של Ajaxהיא נטרול ההבהוב שמתרחש עקב פעולת ה,postback-
הדבר מתאפשר בזכות העברת נתונים חלקית לשרת מבלי לרענן את הדף כולו.
כדי לשפר את האתר עם תכונות ,Ajaxבאפשרותך לבחור מבין כמה סביבות Ajaxשונות .רבות
מסביבות אלו מציעות מערכת של תכונות וכלים שכוללת סביבת JavaScriptלצד-לקוח כדי
לאפשר Ajaxבדפדפן ,קוד JavaScriptלתקשורת עם השרת ,ופקדי שרת שמיועדים לשילוב עם
דפי .ASP.NETבמערכת ASP.NETזמינות כמה סביבות שונות של ,Ajaxאבל הבולטת ביניהן היא
,ASP.NET AJAXמכיוון שהיא מגיעה יחד עם סביבת העבודה ASP.NET 3.5וVisual Web -
Developerומכילה כמה פקדים נוספים ליצירת ממשקי משתמש עשירים ואינטראקטיביים.
בנוסף לחלק של Ajaxשמבוסס על פקדי שרת ,סביבת העבודה ASP.NET AJAXכוללת גם
סביבת צד-לקוח עשירה .סביבת עבודה זו מאפשרת ל JavaScript-לתקשר עם השרת על ידי
שירותי .Webהיא גם מאפשרת גישה לדף צד-לקוח בשלמותו ,תוך שימוש בדגם קוד
אינטואיטיבי שפועל באופן שאינו תלוי בדפדפן היעד שלך.
בגרסאות קודמות של ASP.NETושל Visual Web Developerהייתה Ajaxזמינה כתוסף שנטען
בנפרד .כיום משולבת Ajaxלחלוטין ב VWD-וב ,ASP.NET-והדבר מקל על הפעלתה.
בפרק זה תלמד בהרחבה על הנושאים הבאים הקשורים ל:Ajax-
~
שימוש בפקד UpdatePanelלמניעת הבהוב דף ).(page flicker
~
הבנת הפקד ScriptManagerשמאפשר את הפונקציונליות של .Ajax
~
שימוש בפקד UpdateProgressכדי ליידע את המשתמשים לגבי התקדמות פעולת .Ajax
~
שימוש ב ַמזנ ֵקים ) (triggersובפקד
.UpdatePanel
~
יצירת שירותי Webנגישים לתסריט )סקריפט( צד-לקוח.
340
סדנת לימוד ASP.NET 3.5
Timer
כדי לעורר את העדכון של פקדים מסוג
עם סיום הלימוד בפרק זה ,תכיר היטב את פקדי השרת השונים שמציעה סביבת העבודה
ASP.NET AJAXואת דרך הפעלתם .בנוסף ,תהיה לך הבנה בסיסית על יצירת שירותי Web
בעולם של ,ASP.NETוכיצד ניתן לקרוא להם מקוד JavaScriptשל צד-לקוח תוך שימוש
בסביבת העבודה Ajaxשל צד-לקוח.
מבוא לAjax-
המושגים שעומדים מאחורי Ajaxאינם חדשים ,וכבר ידועים מזה שנים .עוד מאז גרסת הדפדפן
Internet Explorer 5כללו הדפדפנים את האובייקט XMLHttpRequestשמאפשר לJavaScript-
לקרוא לשרת לצורך שליחה וקבלה של נתונים.
הדברים תפסו תאוצה כשהוכנס המונח Ajaxלשימוש .במטרה להקדים את השאר ,החלה
מיקרוסופט בבניית ,ASP.NET AJAXשהינה סביבת העבודה של Ajaxשמשולבת כיום לחלוטין
ב ASP.NET-וב .Visual Web Developer 2008 -סביבת עבודה זו מציעה כמה תועלות שמתכנת
אתרי אינטרנט יכול לנצל כדי ליצור יישומים שמגיבים היטב ASP.NET AJAX .מאפשרת
במיוחד את הפעולות הבאות:
~
יצירת דפים חופשיים מהבהוב שמאפשרים רענון חלקי שלהם מבלי לטעון את הדף
כולו מחדש ,ומבלי להשפיע על חלקים אחרים שלו.
~
אספקת משוב למשתמשים תוך כדי רענון הדף.
~
עדכון קטעים בדף וקריאה לקוד צד-שרת בהתאם ללוח זמנים קבוע.
~
גישה לשירותי Webבצד-שרת ,ועבודה עם הנתונים שהם מחזירים.
~
שימוש בסביבת העבודה העשירה של צד-לקוח כדי לגשת ולשנות אלמנטים בדף.
במהלך הפרק תלמד כיצד להשתמש בסביבת העבודה ASP.NET AJAXכדי ליצור יישומי
אינטרנט בעלי ממשק משתמש עשיר וידידותי Ajax .עצמה היא נושא רחב שלא ניתן למיצוי
בפרק אחד .אם ברצונך לדעת יותר על ,ASP.NET AJAXתמצא מידע רב ברשת ,ובכתובת:
www.asp.net/AJAXתוכל למצוא מאמרים וקטעי וידאו בנושא.
היפה ב ASP.NET AJAX -הוא שקל מאוד להתחיל להשתמש בתוכנה .יצירת דף חופשי מהבהוב
היא עניין של גרירת כמה פקדים מארגז הכלים ושחרורם בדף .כשתבין את יסודות סביבת
העבודה ,Ajaxתוכל להרחיב את הידע שלך על ידי התבוננות בנושאים מתקדמים יותר ,כמו
קריאה לשירותי Webושימוש בסביבת העבודה העשירה של צד-לקוח לעבודה אינטגרטיבית
עם הדף.
שימוש ב ASP.NET Ajax -בפרויקטים שלך
בגרסאות קודמות של VWDושל ASP.NET AJAXהיית צריך לשנות את הקובץ
באופן ידני כדי לאפשר את פעולת Ajaxביישום מבוסס .ASP.NETאם עבדת עם Ajaxבעבר
בפרויקטים של ,ASP.NETתשמח ללמוד שהדבר אינו נחוץ עוד .בכל פעם שאתה יוצר אתר
web.config
פרק ASP.NET AJAX :10
341
אינטרנט חדש על ידי שימוש בתיבת הדו-שיח ,New Web Site ← Fileהאתר כבר מוגדר
לעבודה מול ,Ajaxכלומר ,אתה יכול להתחיל להשתמש ב Ajax-מייד .ארגז הכלים מכיל כיום
קטגוריה נוספת שכוללת את פקדי Ajaxהזמינים ,ואפשר להשתמש בהם מייד מההתחלה.
יצירת דפים חופשיים מהבהוב
ניתן להשתמש בפקד השרת UpdatePanelכדי למנוע postbacksמלאים של דפי ,ASPXוכדי
לעדכן רק חלקים נבחרים בדף .כדי שפקד זה יפעל נכון ,אתה זקוק גם לפקד .ScriptManager
אם בכוונתך להשתמש בפונקציונליות של Ajaxבדפי ASPXרבים ,כדאי להציב את הפקד
ScriptManagerבדף הראשי .בדרך זו הוא יהיה זמין לכל הדפים שמבוססים על דף ראשי זה.
פקד זה ופקדים אחרים שקשורים ל ,Ajax-נמצאים בקטגוריה AJAX Extensionsשל ארגז
הכלים ,שמוצגת בתרשים .10-1סמוך לסיום הפרק תקבל הסבר מפורט על ,ScriptManager
ותגלה מה הוא עושה ולמה הוא משמש.
תרשים 10-1
אם אינך רואה את הפקדים ScriptManagerו UpdatePanel-בארגז הכלים ,לחץ לחיצה ימנית על
הקטגוריה AJAX Extensionsשל ארגז הכלים ובחר .Choose Itemsאחר כך בחר בשני הפקדים
מהרשימה שבכרטיסייה .NET Framework Components
בשני הסעיפים הבאים תכיר את הפקדים ScriptManagerו .UpdatePanel-אחר כך תראה כיצד
להשתמש בפקדים אלה בדפים שלך .בסעיפים מאוחרים יותר תכיר את הפקדים
Timer ,UpdateProgressו.ScriptManagerProxy -
הפקד UpdatePanel
הפקד UpdatePanelהוא רכיב מפתח ביצירת דפים חופשיים מהבהוב .כדי ליישמו בצורה
הבסיסית ביותר ,עטוף את התוכן שברצונך לעדכן בפקד ,והוסף לדף פקד ,ScriptManagerובזה
סיימת .בכל פעם שאחד הפקדים שבתוך UpdatePanelגורם postbackלשרת ,תתבצע פנייה
חלקית לשרת ורק התוכן שרשום בתוך UpdatePanelיעודכן.
הבה נראה מהן הבעיות שפותר הפקד UpdatePanelואיך הוא מתנהג בדף לקוח .תרגיל נסה
זאת הבא מציג דוגמה פשוטה של שימוש בפקד כדי למנוע הבהוב של דף במהלך .postbacks
342
סדנת לימוד ASP.NET 3.5
נסה זאת הוספת הפקד UpdatePanelלדף
בתרגיל זה תוסיף את הפקדים Labelו Button-לדף .בכל פעם שתלחץ על הלחצן בדפדפן,
יעודכן המאפיין Textשל Labelעם התאריך והשעה הנוכחיים של השרת .בדרך כלל מלווים
postbacksבהבהוב של הדף .כדי למנוע זאת ,עטוף את הפקדים שבדף ב ,UpdatePanel-ותראה
כיצד פקד זה משפיע על ההתנהגות.
.1ב ,VWD-פתח את הפרויקט Planet Wroxבכתובת .C:\BegASPNET\Site
.2צור קובץ חדש בשם UpdatePanel.aspxבתיקייה .Demosודא שהקובץ מבוסס על דף
הבסיס המרכזי שיצרת קודם ,ושהוא משתמש בשפת התכנות שלך .קבע את Titleשל
הדף ל.UpdatePanel Demo -
.3העבר את הדף החדש למצב Design Viewוגרור פקד Labelופקד Buttonמארגז הכלים
אל שומר המקום .cpMainContentאם ContentPlaceHolderנהיה קטן פתאום לגודל
של ,Labelשחרר את Buttonמעל הפקד .Labelהפקד Buttonיוצב במקרה זה לפני
,Labelאבל אם תגרור כעת שוב את Labelעל הפקד ,Buttonהשניים יחליפו מקומות.
לחילופין ,בחר את Labelעל ידי לחיצה אחת עליו ,ואז לחץ על מקש החץ הימני פעם
אחת כדי להציב את הסמן ליד .Labelאם תקיש כעת Enterכמה פעמים ,תיצור יותר
מקום ב.ContentPlaceHolder-
.4השתמש בטבלת המאפיינים כדי לנקות את המאפיין Textשל הפקד .Labelלביצוע,
לחץ לחיצה ימנית על המאפיין Textבטבלת המאפיינים ,ובחר .Resetכעת תקבל את
סימני העריכה הבאים:
>"<asp:Content ID="Content2" ContentPlaceHolderID="cpMainContent" runat="Server
><asp:Label ID="Label1" runat="server"></asp:Label
><asp:Button ID="Button1" runat="server" Text="Button" /
></asp:Content
.5ב ,Design View -לחץ לחיצה כפולה על שטח הדף שצבעו אפור ומצביע על קריאה
בלבד .הפעולה תגרום להגדרת מטפל לאירוע Loadשל הדף .הוסף את הקוד הבא
למטפל שיצרה עבורך :VWD
VB.NET
_ )Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs
Handles Me.Load
)(Label1.Text = System.DateTime.Now.ToString
End Sub
C#
)protected void Page_Load(object sender, EventArgs e
{
;)(Label1.Text = System.DateTime.Now.ToString
}
פרק ASP.NET AJAX :10
343
פקדים חדשים שהוצגו בASP.NET 3.5 -
יחד עם ,LINQהציגה מיקרוסופט ב ASP.NET 3.5 -שלושה פקדים חדשים שמאפשרים לבנות
ממשקי אינטרנט עשירים בזמן קצר ביותר ועם מעט מאוד קוד ,אם בכלל .שניים מהם מספקים
ממשק חזותי בדפי ,ASP.NETבעוד השלישי פועל כגשר בין הפקדים קשורי-הנתונים ומקור
הנתונים הבסיסי .הטבלה הבאה מציגה בקצרה את שלושת הפקדים החדשים.
פקד
LinqDataSource
ListView
DataPager
תיאור
כמו עם SqlDataSourceשראית בפרקים קודמים ,גם הפקד
פועל כגשר בין הפקדים קשורי-הנתונים לבין מקורות הנתונים הבסיסיים.
מקור נתונים זה יכול להיות כל אחד מהסוגים שבהם תומכת ,LINQכולל
בסיסי נתונים מסוג ,SQL SERVERמסמכי ,XMLואפילו מערכים ואוספים.
פרק זה עוסק בפקד LinqDataSourceמנקודת המבט של LINQ to SQLבלבד.
LinqDataSource
הפקד ListViewמספק ממשק חזותי שמאפשר להציג ,להכניס ,לערוך
ולמחוק פריטים בבסיס נתונים ,תוך מתן שירותי CRUDמלאים.
משתמשים בפקד DataPagerביחד עם ,ListViewאשר מאפשר לעמד את
הנתונים במקור הנתונים ולהזין למשתמש מדי פעם כמויות נתונים קטנות
יותר ,ולא מספר רב של רשומות בבת אחת.
הסעיפים הבאים מספקים מידע נוסף על פקדים חדשים אלה ,ובכמה תרגילי נסה זאת הבאים
תלמד כיצד להשתמש בהם.
הפקד LinqDataSource
כפי שמשתמע משמו ,הפקד LinqDataSourceהוא קרוב משפחה של SqlDataSourceושל פקדי
מקור נתונים אחרים .היחס בין הפקד LinqDataSourceלבין LINQהוא כמו היחס בין הפקד
SqlDataSourceלבין מקורות נתונים מבוססי .SQL-הפקד מספק דרך הצהרתית לגשת למקורות
נתונים מאופשרי .LINQ-בדיוק כמו הפקד ,SqlDataSourceגם הפקד LinqDataSourceמאפשר
גישה קלה לפעולות ,CRUDוהוא גם מקל מאוד על מיון וסינון נתונים .הטבלה הבאה מתארת את
המאפיינים העיקריים של פקד חדש זה .התיאורים אמורים לתת לך מושג טוב על יכולות הפקד.
מאפיין
EnableDelete
EnableInsert
EnableUpdate
ContextTypeName
תיאור
מציין אם הפקד מספק יכולות אוטומטיות למחיקה ,הכנסה ועדכון נתונים
אם לאו .כשהוא במצב מאופשר ,תוכל להשתמש בפקד יחד עם פקדים
קשורי-נתונים כמו GridViewכדי לתמוך בניהול נתונים .תראה זאת
בפעולה מאוחר יותר.
השם של המחלקה DataContextשעל הפקד להשתמש בה .בדוגמאות
שבספר זה ,שם הסוג הזה הוא .PlanetWroxDataContext
פרק LINQ :13
469
תיאור
מאפיין
TableName
שם הטבלה מתרשים LINQ to SQLשברצונך להשתמש בה ,למשל .Reviews
ביחד עם פקד קשור-נתונים מספק LinqDataSourceבאמצעות LINQגישה מלאה לבסיס
הנתונים .SQL SERVERהתרגיל הבא יראה לך כיצד להשתמש בפקד בדפי .ASPX
נסה זאת יישום פשוט של
LinqDataSource
בתרגיל זה תתחיל לבנות את היכולת Gig Picsשל ,Planet Wroxחלק של אתר האינטרנט שבו
המשתמשים יכולים להעלות את התמונות שצילמו בזמן הופעות של הלהקות האהובות עליהם.
תלמד כיצד לאפשר למשתמש ליצור אלבום תמונות חדש שפועל כשומר מקום עבור התמונות
שמועלות .תלמד כיצד להשתמש ב LinqDataSource-וב DetailsView-כדי ליצור ממשק משתמש
שמאפשר למשתמש להכניס את שם האלבום למערכת .בתרגילים מאוחרים יותר תראה כיצד
להוסיף תמונות לאלבום .בסיס הנתונים יכיל רק הפניה לתמונה; התמונה עצמה תאוחסן בדיסק,
כפי שתראה מאוחר יותר.
.1הוסף את שתי הטבלאות הבאות לבסיס הנתונים שלך תוך שימוש בחלון סייר בסיס
הנתונים .לפרטים נוספים בדבר יצירת טבלאות ,מפתחות ראשיים ,ועמודות זהות ,פנה
לפרק .11אם אין ברצונך ליצור את הטבלאות באופן ידני ,תוכל להשתמש בבסיס
הנתונים שמגיע עם הקוד המקור של פרק זה.
אלבום תמונות
שם עמודה
סוג נתונים
מאפשר ?Nulls
תיאור
Id
Int
No
IDייחודי )זהות ומפתח ראשי( של
אלבום התמונות.
Name
)nvarchar(100
No
שם אלבום התמונות.
תמונה
שם עמודה
סוג נתונים
מאפשר ?Nulls
תיאור
Id
int
No
IDייחודי )זהות ומפתח ראשי( של
התמונה.
Description
)nvarchar(300
No
טקסט קצר שמתאר את התמונה.
Tooltip
)nvarchar(50
No
תיאור כלי שמוצג כשעוברים על התמונה.
ImageUrl
)nvarchar(200
No
הנתיב הווירטואלי אל התמונה בדיסק.
PhotoAlbumId
int
No
IDשל אלבום התמונות שתמונה זו
שייכת אליו.
470
סדנת לימוד ASP.NET 3.5
עבור שתי הטבלאות ,הגדר את העמודה Idכמפתח ראשי ,על ידי לחיצה עליה פעם אחת
ואז לחיצה על הסמל עם המפתח הצהוב בסרגל הכלים .Table Designerבנוסף ,הפוך
עמודה זו לעמודת הזהות ) (Identityשל הטבלה על ידי הגדרת המאפיין Is Identityשלה
ב Column Properties Grid -ל .Yes-פנה לפרק 11אם אינך זוכר כיצד לעשות זאת.
.2בסייר בסיס הנתונים ,פתח את תרשים בסיס הנתונים שיצרת בפרק ,11והוסף אליו את
שתי הטבלאות החדשות )כדי לעשות זאת ,לחץ לחיצה ימנית על התרשים ובחר Add
.(Tableאחר כך גרור את העמודה Idמהטבלה PhotoAlbumאל העמודה PhotoAlbumId
של הטבלה .Pictureלחץ OKפעמיים כדי לגרום למעצב ליצור קשר בין הטבלה
PhotoAlbumלבין הטבלה ,Pictureכפי שמוצג בתרשים .13-8
תרשים 13-8
.3שמור וסגור את התרשים .לחץ
בטבלאות PhotoAlbumו.Picture-
OK
כדי לאשר את השינויים שעומדים להיערך
.4מהתיקייה ,App_Codeפתח את הקובץ PlanetWrox.dbmlשל .LINQ to SQL Classes
מחלון סייר בסיס הנתונים גרור את שתי הטבלאות החדשות אל התרשים .התרשים
שלך אמור להיראות כעת כמו תרשים .13-9שמור את השינויים וסגור את התרשים.
.5צור קובץ ASPXחדש בשורש האתר ,וקרא לו .NewPhotoAlbum.aspxודא שהוא
מבוסס על התבנית המותאמת אישית שגורמת למחלקה קוד ברקע לרשת מהמחלקה
.BasePageקבע לדף את הכותרת .Create New Photo Album
תרשים 13-9
פרק LINQ :13
471
תרשים 13-10
.6העבר את הדף למצב .Design Viewמהקטגוריה Dataשל ארגז הכלים גרור פקד
DetailsViewושחרר אותו בשומר המקום .cpMainContentפתח את הלוח Smart Tasksשל
הפקד ,DetailsViewומהרשימה הנפתחת Choose Data Sourceבחר >.<New data source
בתיבת הדו-שיח Data Source Configuration Wizardלחץ על הסמל LINQואז לחץ .OK
בתיבת הדו-שיח ,Choose a Context Objectודא שמחלקה PlanetWroxDataContext
נבחרה ,ולחץ Nextכדי לעבור למסך ,Configure Data Selectionשמוצג בתרשים .13-10
מהרשימה הנפתחת Tableבחר .PhotoAlbums
תיבת דו-שיח זו פועלת בצורה דומה לאשף SqlDataSourceשראית בפרקים קודמים.
היא מאפשרת לבחור טבלה מהרשימה הנפתחת .Tableלצורך תרגיל זה ודא שמהרשימה
הנפתחת בחרת .PhotoAlbumsבצד הימני מופיעים לחצנים שתפקידם ליצור מסננים
)תוך שימוש בלחצן ,(Whereלקבוע את סדר המיון )תוך שימוש בלחצן ,(OrderByולומר
ל LinqDataSource-אם לאפשר ,או לא לאפשר ,הכנסה ,עדכון ומחיקה של נתונים.
~
לצורך תרגיל זה נאפשר הכנסת נתונים .לפיכך ,לחץ על
הכנסות ,כפי שמוצג בתרשים .13-11
תרשים 13-11
472
סדנת לימוד ASP.NET 3.5
Advanced
ואפשר
כדי לסגור אתFinish ולחץ,Advanced Options כדי לסגור את המסךOK לחץ
.אשף התצורה
בלוח
Enable Inserting
על ידי סימון הפריט,לבצע הכנסה
DetailsView
~
אפשר לפקד.7
. של הפקדSmart Tasks
ממצב
DefaultMode
ושנה את
DetailsView
פתח את טבלת המאפיינים של הפקד.8
.Insert- לReadOnly
ועבור, פתח את טבלת המאפיינים שלו,LinqDataSource בחר בפקד,Design View - ב.9
.13-12 כפי שמוצג בתרשים,Inserted לחץ לחיצה כפולה על האירוע.Events לקטגוריה
13-12 תרשים
הקוד מכוון את המשתמש לדף חדש ברגע. הכנס את הקוד הבא אל מטפל האירוע.10
. לאלבום התמונות בבסיס הנתוניםInsert שבוצעה פעולת
VB.NET
Protected Sub LinqDataSource1_Inserted(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.LinqDataSourceStatusEventArgs) _
Handles LinqDataSource1.Inserted
Dim myPhotoAlbum As PhotoAlbum = CType(e.Result, PhotoAlbum)
Response.Redirect(String.Format("ManagePhotoAlbum.aspx?PhotoAlbumId={0}", _
myPhotoAlbum.Id.ToString()))
End Sub
C#
protected void LinqDataSource1_Inserted(object sender, LinqDataSourceStatusEventArgs e)
{
PhotoAlbum myPhotoAlbum = (PhotoAlbum)e.Result;
Response.Redirect(string.Format("ManagePhotoAlbum.aspx?PhotoAlbumId={0}",
myPhotoAlbum.Id.ToString()));
}
הזן שם חדש. בדפדפןNewPhotoAlbum.aspx ובקש את הדף, שמור את כל השינויים.11
ולחץSonic Youth Playing Daydream Nation Live in London לאלבום התמונות כמו
)מפני שטרם יצרת אתPage not found כעת תקבל הודעת שגיאה.Insert על הלחצן
של אלבום התמונות בסרגלID- אבל תוכל לראות את ה,(ManagePhotoAlbum.aspx
.הכתובת של הדפדפן
473
LINQ :13 פרק
כיצד זה פועל
התחלת תרגיל זה בהוספת הטבלאות Pictureו PhotoAlbum-הן לבסיס הנתונים והן למחלקה
.to SQLטבלאות אלו משמשות לאחסון נתונים אודות אלבומי תמונות והתמונות שהם מכילים .כל
אחת מהתמונות שייכת ל PhotoAlbum-שאליו היא פונה על ידי PhotoAlbumIdשלה שמצביע על
העמודה Idשל הטבלה PhotoAlbumבבסיס הנתונים .הטבלה Pictureעוצבה כדי להחזיר נתונים
אודות התמונה בלבד .קובץ התמונה עצמו מאוחסן בדיסק כפי שתראה מאוחר יותר.
LINQ
כדי לאפשר למשתמשים ליצור אלבום תמונות חדש ,הוספת לדף פקד .DetailsViewכדי לוודא
שניתן להשתמש בפקד להכנסת אלבומי תמונות חדשים אפשרת הכנסה ,ואז הגדרת את
DefaultModeל .Insert-הדבר כופה על הפקד לעבור למצב insertבמקום מצב ברירת המחדל
שהוא קריאה-בלבד .אחר כך חיברת LinqDataSourceלפקד DetailsViewאשר דואג להכנסת
אלבום התמונות לטבלה .PhotoAlbum
הקוד עבור הפקד LinqDataSourceנראה דומה לזה:
"<asp:LinqDataSource ID="LinqDataSource1" runat="server
"ContextTypeName="PlanetWroxDataContext" EnableInsert="True
>"OnInserted="LinqDataSource1_Inserted" TableName="PhotoAlbums
></asp:LinqDataSource
אם אתה משתמש ב ,VB.NET-הקוד לא יכיל הגדרה של התכונה .OnInsertedשים לב עד כמה
ישיר LinqDataSourceבתרחיש זה :כיוונת אותו אל ,DataContextובדוגמה שלנו אל
,PlanetWroxDataContextאפשרת הכנסה על ידי הגדרת EnableInsertל ,True-והגדרת את
,TableNameכדי שהפקד ידע באיזו טבלה ממודל האובייקטים להשתמש .להכנסת נתונים
פשוטה ,זה כל מה שעליך לעשות .כשהדף נטען בדפדפן ,ה DetailsView-מרנדר ממשק
משתמש שמאפשר להזין שם חדש עבור אלבום התמונות .כשלוחצים ,Insertנאספים הנתונים
שהוזנו ומועברים ל .LinqDataSource-פקד זה ,בתורו ,יוצר מופע חדש של PhotoAlbumושומר
אותו בבסיס הנתונים על ידי שליחת משפט INSERTשל SQLלבסיס הנתונים.
התנהגות רגילה זו אינה מספקת במצבים רבים .ייתכן שתצטרך לאמת את הנתונים שמוכנסים,
או שתצטרך לשנות את הנתונים הממשיים לפני שהם נשלחים לבסיס הנתונים .דוגמה למקרה
האחרון תראה בתרגיל נסה זאת מאוחר יותר ,כשתעלה תמונות לשרת .דרישה שכיחה אחרת
היא אחזור IDשל הפריט החדש שנוצר ,שנשלח אל הדף הבא .הדוגמה משתמשת בקוד שלהלן
כדי להשיג זאת:
VB.NET
)Dim myPhotoAlbum As PhotoAlbum = CType(e.Result, PhotoAlbum
_ Response.Redirect(String.Format("ManagePhotoAlbum.aspx?PhotoAlbumId={0}",
)))(myPhotoAlbum.Id.ToString
C#
;PhotoAlbum myPhotoAlbum = (PhotoAlbum)e.Result
Response.Redirect(string.Format("ManagePhotoAlbum.aspx?PhotoAlbumId={0}",
;)))(myPhotoAlbum.Id.ToString
474
סדנת לימוד ASP.NET 3.5
הדבר היפה בפקד LinqDataSourceהוא שביכולתו לפעול עם אובייקטים בעלי סוג מובהק,
כשהמבנה ממופה לטבלאות שהוספת למודל האובייקטים .במקרה זה אתה פועל עם מופעים
ממשיים של ,PhotoAlbumהמחלקה שמייצגת את אלבומי התמונות באתר האינטרנט .הדבר
מאפשר לאחזר את אלבום התמונות שהכנסת לבסיס הנתונים באירוע Insertשל פקד מקור
הנתונים .הארגומנט ' 'eחושף מאפיין בשם Resultשמכיל הפניה לאלבום התמונות החדש .על
ידי ) castingהמרה( של המאפיין לאובייקט PhotoAlbumממשי )תוך שימוש בCType-
ב ,VB.NET-או כתיבת שם המחלקה בסוגריים לפניו ב ,(C#-תוכל לגשת למאפיינים של
,PhotoAlbumכולל ה ID-החדש שלו שנוצר על ידי בסיס הנתונים )על ידי הגדרות Identity
בעמודה (IDואוחסן במאפיין Idשל ה .PhotoAlbum-השורה האחרונה במטפל האירוע מעבירה
את המשתמש לדף הבא ושולחת את ה ID-של אלבום התמונות החדש במחרוזת השאילתה.
כעת ,כשאתה יכול להכניס אלבומי תמונות חדשים ,הצעד הלוגי הבא הוא הוספת תמונות
לאלבום התמונות .בתרגיל הבא תלמד כיצד ליצור ממשק משתמש עם הפקד ListViewשמאפשר
למשתמש להעלות תמונות חדשות לאלבום התמונות.
הצגת הפקד ListView
עד כה ראית כמה פקדים קשורי-נתונים בפעולה .ראית את GridViewרב העוצמה שתומך
בעדכונים ,מחיקות ,מיון ודפדוף נתונים ,אבל חסר יכולת הכנסת נתונים ומייצר כמות גדולה של
סימני עריכה של .HTMLראית גם את הפקד Repeaterשנותן שליטה מדויקת על קוד HTMLשנוצר,
אבל חסר את רוב התכונות המתקדמות שיש לשאר פקדי הנתונים כמו עדכון ומחיקה ,ויכולות מיון
וסינון .ראית גם את DetailsViewשמאפשר להכניס או לעדכן רשומה אחת בכל פעם.
הפקד ListViewהוא השילוב המנצח" :הטוב שבכל העולמות" .הוא משלב את קבוצת התכונות
העשירה של GridViewעם השליטה בסימני העריכה שנותן .Repeaterפקד ListViewמאפשר
להציג נתונים במגוון עיצובים ,כולל טבלה )שורות ועמודות כמו ,(GridViewכרשימת תבליטים
)בדומה לאופן שבו הגדרת את Repeaterמוקדם יותר בפרק( ,ובפורמט ,Flowשבו כל הפריטים
מוצבים ב HTML-בזה אחר זה ,וההחלטה בידך אם לכתוב CSSשיעצב את הנתונים.
פקד ListViewמציג ומנהל את הנתונים שלו באמצעות תבניות שמאפשרות שליטה ברבות
מהתצוגות השונות של הנתונים הבסיסיים שהוא מציג .הטבלה הבאה מתארת את כל התבניות
הזמינות שביכולתך להוסיף בסימני העריכה של הדף כתולדה ישירה של הפקד .ListView
תבנית
><LayoutTemplate
תיאור
התבנית משמשת את הפקד כמכולה .מאפשרת להגדיר את
המקום שיוצבו בו כל הפריטים היחידים )למשל.(Reviews ,
פריטי הנתונים ,שמוצגים על ידי ItemTemplate
ו AlternatingItemTemplate-מוספים כבנים של מכולה זו .יותר
מאוחר תראה כיצד זה פועל.
פרק LINQ :13
475
נספח ד'
Silverlight
)נכתב על ידי אלכס גולש(
נספח זה עוסק בנושאים הבאים:
~
מהו ?Silverlight
~
XAML
~
סגנונות ותבניות
~
קישור נתונים
מהו ?Silverlight
Silverlightהוא יישום חדש של סביבת העבודה NETשמשמש לבניית הדור הבא מערכות
אינטרנט ,המאפשרות חוויות מדיה וממשק משתמש עשיר .היישום ניתן להפעלה עם דפדפנים
שונים ובפלטפורמות שונות .היישום מתבצע בכל הדפדפנים הנפוצים כולל Internet Explorer
של מיקרוסופט Firefox ,של Safari ,Mozillaשל Appleו ,Google Chrome -באמצעות plug-in
המותקן בדפדפן שהינו קטן מאוד )כ (4.5MB-ולפיכך התקנתו מהירה מאוד.
Silverlightהוא שילוב של טכנולוגיות שונות לפלטפורמת פיתוח אחת ,שמאפשרת לבחור את
הכלים ושפת התכנות שברצונך להשתמש בהם Silverlight .משתלב באופן חלק עם JavaScript
וקוד AJAXקיימים ,כדי להשלים פונקציונליות שכבר יצרת.
(eXtensible Application Markup Language) XAMLהיא הבסיס ליכולות התצוגה של
,Silverlightועקבית עם ,(Windows Presentation Foundation) WPFטכנולוגיית התצוגה
בסביבת העבודה XAML .NET 3.0מאפשרת ליצור ממשק משתמש יוצא דופן -ממשק משתמש
שמתבסס על גרפיקת וקטורים ,שכל חלק ממנה יכול לארח כמעט כל חלק אחר באופן טבעי.
נספח ד'Silverlight :
747
יישום לדוגמה:
748
סדנת לימוד ASP.NET 3.5
ממשק משתמש עשיר:
נספח ד'Silverlight :
749
להלן כמה מאפיינים בולטים של :Silverlight
.1חווית וידאו מהאיכות הגבוהה ביותר .הייה נכון לצפות בכמה סרטי וידאו מהאיכות
הטובה ביותר שראית אי-פעם ,כולם מוטבעים באתרי אינטרנט גרפיים באיכות גבוהה.
טכנולוגיות ה streaming media -שבהן משתמשת מיקרוסופט כיום ,הן אותן
טכנולוגיות ששימשו עבור ,VC-1ה codec-שהניע את BluRayו.HD DVD -
.2מגוון פלטפורמות )מערכות הפעלה ודפדפנים( .סוף-סוף קיימת היכולת לבנות
יישומי אינטרנט שיפעלו בכל דפדפן ובסביבת כל מערכת הפעלה .בעת שחרורו
מבטיח Silverlightעבודה הן עם Macוהן עם !Windowsופרויקט Monoכבר הבטיח
תמיכה ב!Linux-
.3מפתחים ומעצבים גרפיים יכולים לשחק יחד! מפתחים שמכירים את
וסביבת ,NETיוכלו לפתח במהירות יישומי Silverlightמדהימים .יישומים אלה יפעלו הן
בסביבת Macוהן בסביבת .Windowsמפתחים יוכלו ,סוף-סוף ,להתמקד ב back-end-של
ליבת היישום ,ולהשאיר את הפן החזותי לצוות העיצוב הגרפי שישתמש בעוצמת .XAML
Visual Studio
.4זול יותר Silverlight .הינו הדרך הזולה ביותר שקיימת כיום להזרמת קבצי וידאו
באינטרנט ,ובאיכות הגבוהה ביותר האפשרית .הרישוי פשוט ביותר .כל מה שאתה צריך
הוא IISבשרת .Windows
.5תמיכה בשפות צד שלישי .מפתחים יוכלו מעתה להשתמש ב,Ruby-
ו EcmaScript-כשהם משתמשים בעוצמה של .Dynamic Language Runtimeפירוש
הדבר שמפתח Rubyיוכל לפתח יישומי Silverlightכשהוא נהנה מיתרונות סביבת
העבודה .NET
Python
750
סדנת לימוד ASP.NET 3.5
© Copyright 2025