PDA

View Full Version : سوال: ایجاد صفحات جدید به صورت غیرفیزیکی



mhesabi89
جمعه 01 اردیبهشت 1391, 10:52 صبح
یه مدتی هست که سعی دارم با CMS های .Net آشنا شم. قبلا ASP Classic کار می کردم و برای اینکه کاربر بتونه صفحه جدیدی ایجاد کنه از آبجکت FSO استفاده می کردم و به صورت فیزیکی صفحه جدیدی برای کاربر ایجاد می کردم.

اما نکته ای که در مورد CMS های ASP.Net متوجه شدم اینه که به هیچ وجه صفحاتو به صورت فیزیکی اضافه نمی کنن. بلکه محتویات صفحات داخل دیتابیس ذخیره می شه و در صورت لزوم از اونا در کنترل های .net استفاده می کنن.

حالا سوال من اینه که چطور میشه وقتی من آدرس http://localhost/pageurl.aspx را وارد می کنم و pageurl.aspx به صورت فیزیکی وجود نداره IIS منو به صفحه 404 not found منتقل نمی کنه بلکه منو وارد صفحه جدیدی میکنه؟

dorparasti
جمعه 01 اردیبهشت 1391, 11:18 صبح
برای این حالت در asp.net 3.5 به قبل می تونید از Url Rewriter استفاده کنید و در asp.net 4.0 از Routing استفاده کنید . در مورد این دو جستجو کنید در همین فروم .

mhesabi89
جمعه 01 اردیبهشت 1391, 18:51 عصر
ممنون بابت راهنمایی.
حالا من جدولی به نام Pages دارم که قراره صفحات جدید تو اون ساخته شن. فیلدهای اون id_page, id_parent, page_name هستن.
من با استفاده از یه حلقه برای هر صفحه اصلی که دارای زیر صفحه هست یه RouteTable ساختم، اگر لازم بود بگید کدشو هم اینجا می زارم.

چه راهی رو پیشنهاد می دید برای اینکه بررسی کنیم آیا صفحه وارد شده وجود داره یا نه؟ چیزی که به عقل خودم می رسه اینه که آدرس وارد شدرو بشکونم و تو جدول Pages بگردم ببینم این صفحه وجود داره یا نه. به نظرتون درسته؟ فکر کنم اینطوری قبل از لود شدن هر صفحه کلی باید زمان صرف بشه و بهینه نیست!

مثلا برای آدرس localhost/Page1/SubPage1/this_page باید چک بشه آیا Page1 فرزندی به نام SubPage1 داره و همینطور آیا SubPage1 فرزندی به نام this_page داره یا نه...

alonemm
یک شنبه 03 اردیبهشت 1391, 11:42 صبح
ممنون بابت راهنمایی.
حالا من جدولی به نام Pages دارم که قراره صفحات جدید تو اون ساخته شن. فیلدهای اون id_page, id_parent, page_name هستن.
من با استفاده از یه حلقه برای هر صفحه اصلی که دارای زیر صفحه هست یه RouteTable ساختم، اگر لازم بود بگید کدشو هم اینجا می زارم.

چه راهی رو پیشنهاد می دید برای اینکه بررسی کنیم آیا صفحه وارد شده وجود داره یا نه؟ چیزی که به عقل خودم می رسه اینه که آدرس وارد شدرو بشکونم و تو جدول Pages بگردم ببینم این صفحه وجود داره یا نه. به نظرتون درسته؟ فکر کنم اینطوری قبل از لود شدن هر صفحه کلی باید زمان صرف بشه و بهینه نیست!

مثلا برای آدرس localhost/Page1/SubPage1/this_page باید چک بشه آیا Page1 فرزندی به نام SubPage1 داره و همینطور آیا SubPage1 فرزندی به نام this_page داره یا نه...

شما میتونید برای خطای وجود نداشتن صفحه یک صفحه بسازید و از طریق فایل Web.config کاربر رو به صفحه مربوطه هدایت کنید:

<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx">
<error statusCode="404" redirect="~/ErrorPages/404.aspx" />
</customErrors>