תוכן עניינים ופרק לדוגמה

‫‪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-Pack‬‬‫‪1.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‬‬