
TestRazor מחזיר מודל מסוג רשימה של מחרוזות, עם ערים כמו תל אביב, חיפה, ירושלים ונתניה. ב-Add View בוחרים Strongly Typed View עם List<string>, וה-View מקבל את המודל.@ ואחריו פקודה, למשל @foreach (string city in Model). בתוך הלולאה כותבים HTML רגיל, כמו <li>, ואת שם העיר מציגים בעזרת @city. ה-@ נדרש גם ב-@city, כי בלעדיו הדפדפן יציג את המילה כטקסט.@{ ... } מאפשר לכתוב כמה שורות C# רגילות, כולל הגדרת משתנים כמו DateTime.Now.AddMonths(10). כל פקודה מסתיימת בנקודה-פסיק.@: מציג טקסט מתוך קוד C#, בשורה אחת בלבד. לבלוק טקסט שלם משתמשים בתגית <text>.@model, ו-ViewBag.Title מציג את הכותרת.@* ... *@, והמנוע מתעלם ממנה לגמרי.הטקסט המלא של הדקות הראשונות בהרצאה «שפת Razor לכתיבת View» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו מגיעים לתחביר Razor. Razor זאת השפה שבה אנחנו כותבים בדפי ה-View שלנו. בדפי ה-View אנחנו כותבים את ה-HTML שאנחנו רוצים שיגיע ללקוח, אבל בנוסף אנחנו רוצים הרבה פעמים לשלב קוד C-Sharp.
איך אנחנו יכולים לכתוב גם C-Sharp וגם HTML בדף אחד? אז Razor הוא באמת תחביר שמאפשר לנו לשלב קוד C-Sharp בדפים עצמם.
כמובן, הקוד הזה רץ בצד של השרת. חשוב לנו להבין את השפה הזאתי ואיזה תחביר קיים בה בכדי שנוכל בקלות לשלב מידע בתוך דפי ה-view.
בואו לצורך הדוגמה נוסיף קונטרולר, נקרא לו testraiser, ניקח פה איזושהי פונקציה אינדקס, פונקציה דיפולטית שקיימת ונשלח מידע בין הקונטרולר לבין ה-view.
נגיד שאנחנו רוצים לשלוח ליסט של סטרינג והיא מכילה cities, בואו נכניס פה מספר ערים, תל אביב, חיפה, ג'רוזלם ונתניה.
ניקח את ה-Cities ונשלח אותו כמודל שאנחנו עובדים איתו לדף שאנחנו רוצים להציג, ובדף ברצוננו להציג אותו. אז בואו נחזור בחזרה לדף, Add View.
אנחנו רואים שהולך להיווצר לנו View שנקרא Index. אם היינו מסמנים פה Create a Strongly Type View, אז היינו צריכים לציין בדיוק מהו הטיפוס נתונים של המודל שאנחנו מעבירים ושימו לב שאנחנו לא מעבירים סטרינג אנחנו מעבירים ליסט של סטרינג ולכן ניתן לציין
פה ליסט של סטרינג נבצע add ונראה שזה המודל שלנו כבר אנחנו רואים שכאן יש לנו קוד בצהוב וכאן יש לנו קוד בצהוב הקודים בצהוב האלה זה רייזור לפני שנגיע לכאן בואו נבין איך החשיבה צריכה להיות בנוגע לרייזור אז החשיבה אומרת דבר כזה אנחנו נמצאים בדף שהוא view, זה הדף בסופו של דבר שהלקוח הולך לראות.
הדף הזה בעל סיומת cs HTML והרעיון הוא שבתוך הדף הזה יש גם קוד HTML של תגיות וגם קוד C-Sharp, זה ה-CS שיש פה, שמתבצע בשרת ומביא מידע מהשרת ומשלב אותו בתוך הדף.
כאשר אנחנו כותבים את הדף הזה אנחנו צריכים להיכנס לנקודת מבט כזאת, או שאנחנו נמצאים בקוד HTML טהור, כמו שאתם רואים כאן, או שאנחנו נמצאים בקוד Razor, לדוגמה הקוד שמופיע פה.
עכשיו יש שתי שיטות להגיע לקוד Razor. אם אנחנו לא נמצאים בשום תגית צהובה כזאת, זה אומר שאנחנו כבר נמצאים בתוך HTML ואנחנו יכולים לכתוב פה HTML כמה שבא לנו בעזרת תגיות רגילות, אנחנו רואים גם שהInteliface עוזר לנו, בואו ניקח h1 test razor ואנחנו רואים שיש לנו אפשרות לכתוב תגיות HTML בצורה ממש פשוטה.
בואו נייצר כאן רשימה, Unordered List, תגיד UL רגילה. כעת אנחנו רוצים לרוץ ולהביא את הנתונים מהשר"ט, מהמודל.
כלומר, הקונטרולר שלח לנו מידע ואנחנו רוצים עכשיו לרוץ על המידע הזה ולהציג אותו. אז אנחנו יכולים להשתמש בתחביר Razor בשביל להגיע ל-C-Sharp לדוגמה לכלי לולאה, for each.
אז אנחנו נמצאים כרגע בקוד HTML. אם אנחנו רוצים קוד צד שרת בעזרת רייזור, אמרנו יש לנו שתי דרכים. הדרך הראשונה זה פשוט לכתוב בתוך הקוד html שטרודל ואז את פקודת ה-C-Sharp הדרושה.
לדוגמה for each. אז אנחנו רוצים לרוץ for each string ct in והמידע של כל הערים ששלחנו נמצא לנו במודל שהגיע מהקונטרולר. כעת אנחנו רואים שהצלחנו להגדיר פקודת c-sharp אחת ויחידה בתוך קוד html.
כל מה שהיינו צריכים לעשות זה רק לרשום שטרודל לפני הפקודה. עכשיו שימו לב, למרות שיש פה שלוש שורות קוד ובאמצע עומדות להיות עוד שורות, המערכת מסתכלת על כל הדבר הזה כאילו שזו פקודה אחת של c-sharp, כאילו לאה אכן נחשבת לפקודה אחת, שזה נכון שהיא מכילה בתוכה עוד הרבה פקודות.
אבל בגלל שלא לה היא פקודה אחת, מספיק לנו פשוט לרשום שטרודל לפני הלולאה והמנוע של ה-view מזהה שאנחנו רוצים לכתוב פקודת Razor אחת ויחידה שזאת הלולאה. דבר נוסף שחשוב לשים לב שלא הגדרתי במודל שטרודל כמו שעשינו לפני זה.
הסיבה היא כי אם היינו רוצים לרשום כאן את המודל לא היינו יכולים פשוט לרשום דבר כזה מפני שאנחנו נמצאים בתוך קוד html טהור ולכן הדפדפן היה חושב שפשוט אנחנו רוצים להציג את המילה מודל.
בעבר אם רצינו באמת לגשת למודל היינו צריכים לגשת על ידי שטרודל מודל, כי המשתנה מודל זה משתנה ששייך לצד השרת והוא כתוב ב-C-Sharp, ואז היינו יכולים לרשום נקודה ולהגיע אליו.
למה כאן לא היינו צריכים לעשות את זה? הסיבה היא מפני שהפקודה הזאת היא זו שורה נפרדת. רייזור מסתכלת על כל שורה בפני עצמה, ולכן כאן היינו ב-HTML טהור, ולכן היינו צריכים לרשום שטרודל מודל בשביל להגיע למודל.
כאן אנחנו כבר נמצאים בפקודת רייזור, כי הפקודה הזאת מתחילה בשטרודל, ולכן כל הפקודה מבחינת המנוע של ה-view זה רייזור. אז הגענו לצד השרת, יש לנו פעולה, ולכן בכל הפקודה הזאת אנחנו יכולים עדיין להיות בתחום של צד השרת, C-Sharp.
אז אין לנו צורך לרשום את השטרודל שרשמנו כאן. אוקיי, מה אנחנו רוצים לרשום בתוך הלולאה? בתוך הלולאה אנחנו רוצים list item, פריט ברשימה וכאן פתאום עברתי ל-HTML טהור.
עכשיו אני רוצה לשלב את ה-EAR. אם אני רושם CITY אני עדיין בתוך ה-HTML, כי שימו לב איך החשיבה צריכה להיות בנוגע ל-RAור. הפקודה שמתחילה בשטרודל זאת Razor ולכן רק השורה הזאת מבחינת המערכת שייכת לצד השרת.
בגלל שלולאה זו פקודה אחת, אז הפתיחת סוגריים והסגירת סוגריים גם היא שייכת ללולאה ולכן רייזור יודעת שזה גם חלק מהלולאה אבל מבחינת רייזור זה כבר html טהור ולכן אם אני פשוט רושם ct אני לא נמצא בתחום של csharp אני נמצא בתחום של html בואו נראה מה יקרה כשנריץ את זה אנחנו צריכים לגלוש לקונטרולר שלנו שנקרא test.razor והפונקציה index הוא אוטומטית התבצע ואנחנו רואים שהוא פשוט
ראה את המילה סיטי כאילו שהיא חלק מ-HTML וחשב שאנחנו פשוט רוצים לרשום את המילה סיטי ארבע פעמים. אנחנו רוצים לומר למנוע שכאן אנחנו רוצים לקחת את המשתנה סיטי.
משתנה זה שייך לעולם C-Sharp, אם זה שייך לעולם C-Sharp אנחנו צריכים להתחיל אותו בשטרודל. בואו נחזור, נרפרש את הדף ונראה כרגע שאכן המידע שקיים במשתנה הוצג לנו.
אז השיטה הראשונה שבה אנחנו יכלנו לכתוב בשפת רייזור זה פשוט מאוד בכל מקום אנחנו כותבים html רגיל, כאשר אנחנו רוצים פקודה ב-c-sharp,