מה זה מטילדה
מה משמש אותנו הסימון ~ (טילדה) בעולם ה - asp.net.
שאל אותי סטודנט מה המשמעות של כתיבת לינקים בצורה הבאה
~/Folder/Page.aspx
נניח שמבנה הפרוייקט שלנו נראה כך:
Page1.aspx
Folder1/Page2.aspx
Folder1/Folder2/Page3.aspx
ובכל דף נרצה שיהיה לנו לינקים לכל העמודים (נניח שיש לנו Master Page שבו נייצר את הלינקים) ונכתוב את הקוד הבא
<a href="Page1.aspx">Page1</a>
<a href="Folder1/Page2.aspx">Page2</a>
<a href="Folder1/Folder2/Page3.aspx">Page3</a>
כשניהיה בדף הראשון כל הלינקים יעבדו
במידה וניהיה בדף השני שאר הלינקים לא יעבדו מכיוון שהנתיב הוא יחסי - כלומר אם אנחנו נמצאים בתיקייה שנקראת Folder1 ואנחנו לוחצים על לינק של Page1 אנחנו בעצם מחפשים דף שנקרא Page1 בתיקייה Folder1 מה שכמובן לא קיים מכיוון ש - Page1 קיים בתיקייה מעל, וכדי להגיע אליו הלינק צריך להיראות בצורה הבאה
<a href="../Page1.aspx">Page1</a>
שזה אומר - מהמיקום היחסי (כלומר Folder1) תעלה תיקייה אחד למעלה ותלך לדף שנקרא Page1.
הבעייה שכמובן כשניהיה בתיקיית Folder2 הלינק לדף הראשון לא יעבוד מכיוון שצריך להעלות שני תיקיות.
מה שמביא אותנו למסקנה שכתובות יחסיות הם דבר לא טוב כיוון שלא נוכל תמיד לדעת מה הייחס למיקום הספציפי שבו אנחנו נמצאים.
הפיתרון ב - asp.net הוא להשתמש בנתיב אבסולוטי - כלומר לא נתייחס למיקום שבו אנחנו נמצאים כרגע אלא לתחילת האפליקצייה - וכדי לעשות את זה נשתמש ב - ~
<a href="~/Page1.aspx" runat="server">Page1</a>
<a href="~/Folder1/Page2.aspx" runat="server">Page2</a>
<a href="~/Folder1/Folder2/Page3.aspx" runat="server">Page3</a>
כעת כל הלינקים יעבדו בכל הדפים מכיוון ש ~ מתורגומת לנתיב של תחילת האפליקצייה.
הדבר היחיד שצריך לשים לב זה שברגע שהשתמשתם ב ~ האלמנט צריך להיות מוכר בשרת בעזרת runat=server