Register کردن یک UserControl در Web.config و بیان یک محدودیت جالب
یکی از امکانات خوبی که در ASP.net 2.0 اضافه شد امکان Register کردن UserControl ها در Web.config و استفاده از آنها در تمامی پروژه بدون Register کردن در بالای صفحات می باشد . به طور مثال فرض کنید که شما یک Side Bar در وب سايت خود دارید که در 80 % صفحات وب سايت شما استفاده می شود و یا یک WYSIWYG دارید که در تعدادی از صفحات استفاده می شود ، Register کردن اینگونه کنترل ها در تمامی صفحات برای استفاده از آنها عملی فوق العاده خسته کننده بود که تا نسخه 1.1 مجبور بودیم که انجام بدیم ، اما خوب نسخه 2 تکنولوژی ASP.net امکان Register کردن در سطح یک پروژه را به شما می دهد .
برای اینکار کافیست که تکه کد زیر را به web.config پروژه خود اضافه نمائید ،
<system.web>
<pages>
<controls>
<add tagName="tgName" tagPrefix="tgPre" src="~/SomeDir/SomeUC.ascx"/>
</controls>
</pages>
</system.web>اما یک نکته ای در
این صفحه ذکر شده است و آن این است :
When a source is specified, the user control itself must not be in the same directory as the page. If it is, you get a run-time error when you attempt to load the page.
و خطای مربوطه هم به خطای زیر می باشد :
The page '/CustomControlWebSite/Default.aspx' cannot use the user control '/CustomControlWebSite/WebUserControl.ascx', because it is registered in web.config and lives in the same directory as the page.
یعنی اینکه این کنترل و صفحه ای که کنترل را استفاده می کند نباید در یک شاخه باشند ! این مشکل در مورد یک کنترل که از کنترل دیگری نیز استفاده می کند هم کاملا صدق می کند .
موفق باشید.