سبد خرید 0

وبلاگ

url Routing در ASP.NET

چرا Routing :
امروزه اکثر وب سایت ها دارای دیتابیس و تمامی کارها را بر اساس دیتابیس خود انجام میدهند . همانطور که می دانید برای انتقال یه یک صفحه و نمایش اطلاعاتی در مورد یک محصول یا آیتم نیاز است اطلاعاتی را مابین صفحات انتقال دهیم مانند ID محصول . در بیشتر وب سایت ها url های شبیه به url زیر دیده می شود که  مقادیری  را به صفحه مورد نظر از طریق Query String پاس می دهند. :

 مشکل URL بالا چیست ؟

بیشتر search Engin ها مخصوصا Google صفحاتی را که در آنها علامت ? بکار رفته باشد را ایندکس نمی کنند .

امروره اکثر وب سایت ها دارای url های منظم و با معنا هستند به طوریکه به خاطر سپردن آنها خیلی راحت می باشد.Routing  همچنین از نظر سئو و موتور های جستجو هم دارای اهمیت زیادی می باشد.
URL بالا که در مورد معایب آن گفتیم بعد از routing به صورت زیر تبدیل خواهد شد که خوانایی و به خاطر سپردن آن نسبت به روش اول خیلی راحتر می باشد .

در این مقاله برای Route کردن صفحات از فضای نام System.Web.Routing و فایل Global.asax استفاده می کنیم .

1- فضای نام System.Web.Routing به فایل Global.asax اضافه می کنیم .
2- برای تعریف الگوهای تبدیل url از RouteTable.Routes.MapPageRoute استفاده میکنیم .

تابع RouteTable.Routes.MapPageRoute سه پارامتر از ورودی می گیرد :

پارامتر اول نام الگو می باشد و مقدار آن باید برای هر الگو منحصر بفرد باشد .
پارامتر دوم الگویی است که ما تعریف میکنیم ، که توسط آن تعیین می کنیم مثلا آدرس هایی مثل product/name به آدرس پارامتر سوم برود .
و پارامتر سوم مسیری اصلی است .

توضیح :
پارامتر اول نامی است که برای الگو تعریف کرده ایم . پارامتر دوم  دارای اهمیت می باشد . مثلا با تعریف الگوی بالا می توانیم آدرس هایی مثلا موبایل/product  به صفحه product.aspx انتقال دهیم .
در واقع موبایل/product  همانند آدرس “موبایل”=product.aspx?name  می باشد .
در صفحه product.aspx برای گرفتن مقدار Name به صورت زیر عمل می کنیم :

 route کردن صفحه مقالات این سایت (صفحه جاری ) به صورت زیر تعریف  شده است :

که نمونه ای از آدرس آن در همین سایت مانند زیر خواهد شد :

دلیل استفاده از Title در URL جهت تاثیر آن از نظر سئو است .

که عدد 29 مقدار( Article ID) وTitle برای نمایش عنوان مقاله .

کاراکتر * : برای اختیاری قرار دادن  ، مقدار دهی به یک پارامتر می توانید از کاراکتر *  استفاده کنید . در صورتی که کاراکتر * را ننوشته بودیم آدرس زیر با خطای Page not found مواجه می شدیم .

 در پارامتر دوم الگوی مورد نظر خود را می تونید تعریف کنید و برای تعریف کردن پارامتر های مورد نیاز خود آنها را در داخل {} قرار دهید و نامی را به آن اختصاص دهید .
گرفتن مقدار موجود در پارامتر ها :
برای به دست آوردن مقدار موجود در پارامتر های یک آدرس  از کد زیر استفاده می کنیم :

ساخت لینک به صورت داینامیک :


 

کاراکتر هایی برای مرورگر های غیر مجاز و تعدادی دیگر از کاراکتر ها مرورگر آنها را به گونه ای دیگر تفسیر خواهد کرد. مرورگر کاراکتر فاصله را با کاراکتر هایی مانند % جایگزین خواهد کرد ، برای جلوگیری از این جایگزینی می توانید کاراکترهای فاصله را با – جایگزین کنید .
الگوی فوق تقریبا آدرس مانند زیر خواهد شد :

hozhan.ir/Article/1/قسمت-اول-css–اصول اولیه

برای نظم بهتر پروژه می توانید تمامی الگوهای تعریف شده را در یک تابع جداگانه قرار دهید مانند زیر :

نکته :
زمانیکه تعداد / در url بیشتر از یک عدد  باشد مثلا آدرس زیر :

در این حالت برای مسیر دهی سازگار به لینک ها و فایل های css و js  باید از ResolveUrl استفاده کنید و یا اینکه به ابتدای تمامی آدرس های یک / اضافه نمایید :


 

 نکته :

همانطور که گفتیم بعضی از کاراکتر های غیر مجاز می باشد مثل . (نقطه) . اگر url دارای نقطه باشد مانند آدرس زیر(نقطه بعد از asp)  باعث خطای 404  خواهد شد :

برای جلوگیری از ایجاد خطا در این مواقع باید یک / به انتهای آدرس اضافه نمایید .

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up