PracticU

פרוייקט ראשון ב-MVC

בלי כתוביותעם כתוביות
PracticU › קורס MVC › פרוייקט ראשון ב-MVC
מילון מושגים:
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).
תבנית - מבנה בסיסי מוכן שממנו יוצרים פריטים דומים, כמו תבנית עמוד או תבנית מסמך.
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
בדיקת יחידה - בדיקה אוטומטית שבוחנת יחידת קוד קטנה ומבודדת, כמו פונקציה אחת, ומוודאת שהיא פועלת כמצופה.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.

פרוייקט ראשון ב-MVC
ההרצאה מציגה פרויקט MVC בסיסי ("Hello World") ומסבירה את שלושת חלקי התבנית: מודל, קונטרולר ותצוגה, ואת הזרימה ביניהם.
יצירת הפרויקט
1. תבנית: נבחרת התבנית ASP.NET MVC 4 Web Application בגרסת הפריימוורק החדשה ביותר שנתמכת בשרת.
2. View Engine: נבחר מנוע Razor, שפשוט יותר מהמנוע הישן ASPX. תיבת Unit Test לא סומנה.
3. מבנה: התיקיות העיקריות הן App_Data לנתונים, App_Start להגדרות, Controllers, Models ו-Views.
המודל
1. מחלקה: נוצרת מחלקה Product עם השדות ProductName, Price ו-ProductID. המחלקה מייצגת מוצר אחד בלבד.
2. סוג מספר: השדה Price מוגדר כ-decimal, סוג שמיועד לכספים. בערך ההתחלה נכתבת הסיומת M, כדי שהערך ייחשב decimal ולא double.
3. מרחב שמות: המחלקה נכנסת למרחב השמות של Models בתוך שם הפרויקט.
הקונטרולר
1. קונטרולר: נוצר ProductController שיורש מ-Controller, ובו פונקציה Index שמחזירה ActionResult.
2. נתונים: הפונקציה יוצרת מוצר לדוגמה ומעבירה אותו לתצוגה בעזרת return View. בהמשך המידע יגיע ממסד הנתונים.
התצוגה
1. יצירה: בעזרת Add View נוצר קובץ Index.cshtml בתיקייה Products.
2. הצגה: בעזרת @model מוגדר שהמודל הוא Product, ומוצגים ProductName, ProductID ו-Price. בזמן הריצה השרת מחזיר ללקוח HTML בלבד.
3. ניווט: הדפדפן לא נכנס לקובץ התצוגה ישירות, אלא לכתובת של הקונטרולר והפעולה, כמו /Product/Index.
סיכום
בסיום ההרצאה ברור כיצד מודל, קונטרולר ותצוגה עובדים יחד בפרויקט MVC בסיסי.
השיעור הבא בקורס: שינוי מרחב השמות - Namespace
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

להורדת קוד מקור של כל הדוגמאות בקורס MVC – לחץ כאן


פרקי ההרצאה: פרוייקט ראשון ב-MVC

  1. 00:00

    פתיחת פרויקט ASP.NET MVC 4

  2. 01:14

    תבנית Empty ומנוע Razor

  3. 02:33

    תיקיות הפרויקט ב-Solution Explorer

  4. 03:43

    יצירת מחלקת Product במודל

  5. 05:20

    הוספת Products Controller

  6. 06:49

    הוספת View לפונקציה Index

  7. 08:08

    גלישה ל-Controller דרך ה-URL

  8. 10:18

    העברת מידע מה-Controller ל-View

תמלול ההרצאה: פרוייקט ראשון ב-MVC

הטקסט המלא של הדקות הראשונות בהרצאה «פרוייקט ראשון ב-MVC» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    הדבר הראשון שאנחנו הולכים לראות זה איך לפתוח פרויקט פשוט ב-MVC. למה חשוב לראות את זה? בכדי לראות על ההתחלה איזה מרכיבים שונים קיימים במערכת.

  2. 00:12

    משהו בסגנון פרויקט של Hello World פשוט. אז בואו נפתח את Visual Studio, נלך ל-File, New, Project.

  3. 00:23

    כאן אנחנו בוחרים ASP.NET MVC4 Web Application. חשוב לראות שאנחנו נמצאים בפריימוורק החדשה ביותר, זה דבר שכדאי לבצע כל פעם, אלא אם כן אנחנו לא יכולים בשרת להשתמש בפריימורק כזה.

  4. 00:39

    בואו נשמור אותו בתיקייה, נלך לקונן C, בקונן C נפתח את התיקייה של הפרויקט של הוידאו הזה, ניתן שם ל-Solution וניתן שם לפרויקט עצמו.

  5. 01:14

    מה שאנחנו רואים עכשיו זה טופס ראשון שפרויקט MVC נותן לנו, ופה יש לנו מספר פרויקטים בתוך MVC. אנחנו נפתח את MT ונתחיל איתו כי הוא הכי פשוט.

  6. 01:26

    כאן אנחנו רואים שיש לנו View Engine. View Engine מתאר איך ה-View עצמו מתרגם את המידע שבו אנחנו רושמים. כלומר, מהו המנוע שאיתו הוא משתמש בשביל לייצר HTML. כש-MVC יצאה לראשונה היה מנוע של SPX, זה מנוע של SP.NET שמאפשר לכתוב כאילו קוד שרץ ושרט אבל הקוד נמצא בתוך הדפים עצמם של ה-View, דפי ה-HTML.

  7. 01:56

    באיזשהו שלב הוציאו שפה שנקראת Razor, שהיא הרבה הרבה יותר פשוטה ונוחה לשימוש ואיתה אנחנו נשתמש בקורס הזה. אם אנחנו רוצים לבצע בדיקות של האתר שלנו, אנחנו רוצים לסמן את Create a Unit Test Project ולבצע בדיקות על ידי פרויקט שנקרא Unit Test.

  8. 02:15

    אנחנו כרגע לא נסמן אותו, בהמשך אפשר כמובן להוסיף אותו בלי קשר לחלון הזה. אז בואו נלחץ אוקיי ויש לנו פה מערכת MVC שאיתה אנחנו מתחילים לעבוד.

  9. 02:32

    עכשיו מה שאנחנו יכולים לראות כאן זה בסלושן אקספלורר יש מספר תיקיות בואו נעבור עליהם ונראה מה התיקיות השונות שקיימות לנו. AppData מכילה את המידע שהאתר אמור לעבוד איתו.

  10. 02:45

    בדרך כלל זה יהיה קבצי XML או קבצים טקסטואליים שאנחנו רוצים לעבוד איתם. אם יש לנו איזשהו דאטאבייס מקומי הוא גם יכול להיות בתוך AppData, למרות שמומלץ לעבוד עם SQL Server לדוגמה, כאשר הקבצים של הדאטאבייס לא יושבים ב-AppData.

  11. 03:04

    יושבים במיקום הדיפולטי של קבצי ה-SQL בשרת. אפסטארט מחזיק לנו כל מיני קבצים שאנחנו נשתמש איתם בהמשך, ש-MVC יכולה לדעת כל מיני הגדרות שאנחנו יכולים להגדיר. לדוגמה, דיברנו על ראוטס, ואנחנו רואים שיש לנו פה ראוט קונפיג שמאפשר לנו להגדיר את הנתיבים השונים שהאתר מכיר.

  12. 03:28

    התיקייה הבאה שאנחנו רואים זה ה-Controllers. כאן יש את כל המחלקות ששייכות לאזור של ה-Controller באתר שלנו.

  13. 03:36

    התיקייה הבאה בתור ומודלס פה יושבות המחלקות שמתארות את המודל ולבסוף יש לנו פה תיקייה שמתארת את ה-view ופה יושבים הדפים השונים של האתר. הדבר הראשון שאנחנו צריכים להתחיל איתו תמיד זה המודל.

  14. 03:51

    כאן אנחנו בונים את המחלקות שמתארות את המידע שהאתר עובד איתם. אז בואו נלחץ מקש ימני Add Class והמחלקה הראשונה שאנחנו נבנה זו מחלקה שמתארת מוצר.

  15. 04:06

    ואנחנו יוצרים מחלקה שנקראת Product. מה יש בפרודקט? בואו נניח שבפרודקט יש Product Name יש לנו איזשהו Price ובואו נוסיף גם איזשהו Product ID. אז המחלקה הזאת מתארת רק מידע טהור בנוגע למוצר מוצר אחד ויחיד חשוב לשים לב שהמחלקה הזאת מוגדרת by default במרחב שמות שנקרא Models שנמצא בתוך מרחב שמות שנקרא MVC Hello World שזה השם של הפרויקט שפתחנו

  16. 04:51

    אנחנו כמובן יכולים לשנות את המרחב שמות הזה וזה בדרך כלל מה שנעשה בפרויקט אמיתי, לאיזשהו מרחב שמות אחד ויחיד שכל המערכת עובדת איתו.

  17. 05:01

    אבל בגלל שאנחנו הוספנו את המחלקה לתוך תיקיית מודל, אז אנחנו רואים שהמערכת יצרה לנו את המרחב שמות מודל שנמצא בתוך מרחב השמות של האפליקציה עצמה.

  18. 05:14

    אחרי שסיימנו לבנות את המודל שלנו, שכרגע בנוי רק ממחלקה אחת, הדבר הבא שאנחנו הולכים לעשות זה לבנות את ה-Controller. מכה שימני על התיקייה של ה-Controllers, בחירה שבאד קונטרולר כאן אנחנו נותנים שם לקונטרולר כל קונטרולר אמור להתעסק באזור אחר במערכת אם במערכת שלנו יש מוצרים אז אמור להיות לנו קונטרולר שמתעסק במוצרים אז בואו

  19. 05:42

    נקרא לו product controller חשוב שהשם של הקונטרולר יסתיים במילה קונטרולר אנחנו כרגע נשתמש באמתי mvc קונטרולר כלומר אבל אני לא רוצה שהמערכת תוסיף לנו כל מיני דברים נוספים שאנחנו כרגע לא יודעים מהם בהמשך אנחנו נתעסק עם זה נלחץ על L ויש לנו כרגע קונטרולר שזאת סך הכל מחלקה שמתעסקת עם כל

  20. 06:07

    הלוגיקה שקשורה למוצרים. מחלקת הקונטרולר יורשת את המחלקה קונטרולר וזה מה שהופך אותה להיות קונטרולר. בי דיפולט אנחנו רואים שיש לנו פונקציה שנקראת אינדקס, היא מתארת את הפעילות הדיפולטית של הקונטרולר הזה ששייך לפרודקטס.

  21. 06:28

    הפונקציה אינדקס מחזירה ActionResult. ActionResult מאפשר לנו להציג View, ואנחנו רואים שיש פה בפונקציה return view. view בעצם זה התצוגה שאנחנו תכף הולכים לבנות.

  22. 06:42

    אוקיי, אז בואו נלך ונבנה את ה-view. בשביל לבנות את ה-view הדבר הוא מאוד פשוט, כל מה שאנחנו עושים, מכה שימני על הפונקציה, add view.

  23. 06:56

    בי דיפולט השם של ה-view ואותו שם של הפונקציה שנמצאת בקונטרולר. אוקיי, בואו נוסיף כרגע את ה-view ויש לנו את שלושת המרכיבים השונים במערכת.

  24. 07:16

    אנחנו רואים שיש לנו כאן את המודל, סך הכל פרודקט. אנחנו רואים שיש לנו כאן את הקונטרולר שמתעסק במוצרים, ואנחנו רואים שיש לנו view אחד שנקרא אינדקס, והוא נמצא בתוך תיקיית פרודקטס שנמצאת בתוך התיקייה views.

  25. 07:33

    וזה בעצם ה-UI היחידי שיש לנו במערכת, User Interface, כלומר דף אחד ויחיד שכרגע בנינו. הסיומת של כל דפי ה-view היא CSHTML. למה זה CSHTML?

  26. 07:48

    מפני שבתוך הדף הזה יש גם קוד HTML, אנחנו יכולים לראות אותו פה וגם אנחנו יכולים לכתוב קוד בשפת C-Sharp על ידי המנוע Razor, זה המטרה שלו, לבצע קוד שרץ בצד של השרת, מייצר HTML שבסופו של דבר רק ה-HTML מוחזר ללקוח.

  27. 08:08

    אז אם אנחנו הולכים להריץ כרגע את האתר שבנינו על ידי Control-F5, אנחנו לא הולכים לראות שום דבר כאשר אנחנו מריצים את האתר מפני שאני מזכיר לכם שב-MVC אנחנו לא גולשים לדף ספציפי, אנחנו צריכים לגלוש לפונקציה שנמצאת ב-Controller.

  28. 08:25

    אז אם זה הכתובת של האתר שלנו אנחנו יכולים לרשום סלאש, לרשום את השם של הקונטרולר בלי המילה קונטרולר, בלי הסיומת קונטרולר שלו ואז סלאש ואת השם של הפונקציה שאנחנו רוצים לגלוש אליה.

  29. 08:42

    בתוך הקונטרולר הייתה לנו פונקציה שנקראת אינדקס ולכן אנחנו פשוט יכולים לרשום את השם של הפונקציה, אנטר וקיבלנו את ה-view שהקונטרולר מחזיר לנו, שכל מה שהוא כתב שם זה אינדקס.

  30. 08:55

    בואו נסתכל רגע ונראה שזה מה שיש בתוך ה-view. Index זאת מילה שמתארת פעילות דיפולטית ולכן גם אם היינו רושמים רק Products ולוחצים Enter, אוטומטית הוא היה מחפש ספציפית פונקציה שנקראת Index.

  31. 09:14

    כל הפעילות הזאת של מה אנחנו רושמים בשורת ה-URL זה נושא שנקרא Routes שאנחנו נדבר עליו בהמשך ונראה את כל מה שאפשר להגדיר כאן. אבל רגע, לא העברנו שום דבר מהקונטרולר ל-View.

  32. 09:29

    כלומר, לקוח גלש לקונטרולר, בתוך הקונטרולר הוא גלש לפונקציה אינדקס, הפונקציה אינדקס יצרה לו את ה-view, mvc אוטומטית מחפשת view שנמצא בתוך תיקייה שנקראת product כי גלשנו לקונטרולר product ובתיקייה הזאת היא מחפשת view, כלומר דף שהשם שלו זה אותו השם של הפונקציה שלקוח הקצה גלש אליה ואכן הוא מוצא פונקציה כזאת.

  33. 10:01

    אז מה שהוא עושה בקונטרולר הוא מייצר אובייקט ממנה, יכולים לראות את זה כאן, אובייקט מה-view ואוטומטית מוחזר ללקוח אובייקט מה-view. אם אנחנו נסתכל מה יש בתוך ה-view, יש לנו פה סך הכל h2 שבתוכו כתוב אינדקס.

  34. 10:18

    אנחנו רוצים להעביר מידע מהקונטרולר ל-view. אז לצורך כך אנחנו צריכים ללכת לקונטרולר ובדיוק לפני שאנחנו הולכים לייצר בחזרה את ה-view אנחנו צריכים לגשת לדאטאבייס Access to the database, להביא מהדאטאבייס מידע, לייצר אובייקט או לקבל בחזרה אובייקט מהמידע שקיבלנו מהדאטאבייס ולהעביר מכאן את המידע ל-view בכדי שה-view ישלב אותו בתצוגה.

  35. 10:51

    אנחנו כרגע בפרויקט Hello World שלנו לא ניגש לדאטאבייס אלא נייצר את האובייקט הזה on the fly. בהמשך אנחנו נראה איך בדיוק אנחנו מביאים את המידע גם מהדאטאבייס.

  36. 11:02

    ולכן כל מה שנעשה כרגע זה ניצור אובייקט במחלקה products, נכון פרודקט, נאכלס אותו בנתונים, product name, price ו-product ID. שימו לב ל-M, מפני ש-price מוגדר כדצימל ו-4.5 מוגדר כדאבל וה-M מבצעת קאסטינג מ-double לדצימל.

  37. 11:43

    דצימל מיועד להחזיק כספים ו-M זה קיצור של money.

לקורס המלא: קורס MVC אונליין בעברית

ההרצאה הקודמת: ארכיטקטורה של MVC

ההרצאה הבאה: שינוי מרחב השמות - Namespace

הרצאות קשורות מקורסים אחרים

  • פרוייקט ראשון - בפוסטמן - Postman
  • טסט ראשון
  • הסבר על MVC
  • פרוייקט מסכם ב-Xcode

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס Git ו-GitHub עם Visual Studio