באג בUpdatePanel וIE בURLים עבריים

כידוע, ASP.NET WebForms משמר את הערכים של הפקדים בדף בין הpostbackים ע"י שימוש בform אחד המכיל, בדרך כלל, את כל שאר התגיות שבדף. בנוסף, בWebForms מקובל שכל דף עושה post לעצמו. כלומר, בדף default.aspx הערך של האטריבוט action של הform יהיה בדרך כלל גם כן default.aspx:

<form method="post" action="default.aspx" id="form1">
    ...
</form>

בנוסף, ASP.NET מבצע אופטימיזציה לURL המופיע בaction שיהיה יחסי לURL הנוכחי. כך למשל בדף הזמין בכתובת /blog/default.aspx הערך של action יהיה default.aspx בלבד.

למה זה חשוב? כנראה, בגלל ש .NET 4.0 היא הגרסה הראשונה של הframework שבה WebForms תומך בRouting, ומאפשר URLים ידידותיים, לא חשבו על תסריט של כתובת URL ידידותיות ובעברית, או לפחות לא בדקו את המימוש בצורה מספיקה.

לגבי מה הדברים אמורים?

נניח שהגדרנו Route כדלהלן:

RouteTable.Routes.MapPageRoute("bug", "באג/{unicode}", "~/default.aspx");

עכשיו, אם נגלוש לכתובת "/באג/בדיקה", נגיע לדף default.aspx כשהערך של הפרמטר unicode הוא "בדיקה". כמו"כ, בדף שיוגש לנו הערך של הaction בform יהיה, כצפוי, "בדיקה".

<form method="post" action="בדיקה" id="form1">
   ...
</form>

כעת אם הדף default.aspx יעשה PostBack לעצמו, השאילתא תתבצע בהצלחה, ותיראה כך:

POST /%D7%91%D7%90%D7%92/%D7%91%D7%93%D7%99%D7%A7%D7%94 HTTP/1.1

עד כאן הכל טוב ויפה. הבעיה מתחילה כשמנסים לבצע CallBack מאותו הדף. עוד...

קטגוריות: .NET 4.0 | IIS | .NET
תגיות: , , , , , ,

הכירו את IIS URL Rewrite 2.0

URL Rewriteתהיתם פעם איך ניתן לשפר את חווית המשתמש ודירוגו של אתר קיים בנועי החיפוש בלי לבצע שינויים נרחבים לאתר כולו? איך לשמר כתובות ישנות של דפים שלאחר שדרוג עברו לכתובת חדשה בלי לזהם את הקוד החדש במידע אודות הכתובות הישנות?

הכירו את IIS URL Rewrite 2.0! בשונה מהגרסה הקודמת, שידעה בעיקר לתרגם כתובות מתחת לפני השטח, הגרסה החדשה מהווה חבילת פתרונות שיכתוב וניתוב עשירה עם ממשק ניהול מוטמע בממשק הIIS. כעת, נדרשים רק קליקים ספורים כדי לבצע פעולות שיכולות לשדרג משמעותית את האתר, הן עבור הגולשים – שיקבלו כתובות URL הגיוניות, והן מבחינת מנועי החיפוש ע"י ביטול תוכן כפול, והכנסת מילות מפתח לURL עצמו. עוד...

קטגוריות: .NET | .NET 4.0 | IIS | Tools