Tuesday, January 04, 2011

because it is registered in web.config and lives in the same directory as the page

הוספה של User Control לעמוד.
במידה ואתם עובדים עם User Controls יש שתי דרכים להשתמש בהם בדפי ה - aspx שלנו.
דרך אחת להוסיף שורת Register בתחילת העמוד:
<%@ Register src="~/UserControl.ascx" tagname="UserControl" tagprefix="uc1" %>

דרך נוספת היא לרשום את ה - UserControl בקובץ ה - web.config, כך:
<system.web>
 <pages>
   <controls>
     <add src="~/UserControl.ascx" tagName="UserControl" tagPrefix="uc1"/>
   </controls>
 </pages>
</system.web>
אני מעדיף את הדרך השנייה, מכיוון שזה חוסך לי להוסיף Register לכל עמוד.
הבעייה:
יש בעייה מוזרה במידה ורושמים את ה - UserControl בקובץ הקונפיג, וגם ה - User Control וקובץ הקונפיג נמצאים באותה תיקייה (כלומר ב - root) נקבל את השגיאה הבאה: (בהנחה של - UserControl קוראים UersControl.ascx ולדף קוראים WebForm1.aspx)
The page '/WebForm1.aspx' cannot use the user control '/UserControl.ascx', because it is registered in web.config and lives in the same directory as the page.
הפיתרון:
להעביר את ה - UserControl לתיקייה אחרת (נניח UC) ואז נכתוב:
<system.web>
 <pages>
   <controls>
     <add src="~/UC/UserControl.ascx" tagName="UserControl" tagPrefix="uc1"/>
   </controls>
 </pages>
</system.web>
למה זה קורה ?

Read more: שלמה גולדברג (הרב דוטנט)