آموزش Route کردن صفحات در Asp.net

Routing  جدا از زیبایی که به سایت شما می دهد از نظر سئو و موتور های جستجو مهم بوده و در سئوی سایت شما موثر می باشد ،امروزه بیشتر وب سایت ها دارای آدرس های منظم و میشه گفت سفارشی هستند  . ] شرکت مایکروسافت در نسخه 3 ،Asp.net mvc صفحات رو به صورت خودکار Routeکرده است[.

در این مقاله قصد دارم Route کردن صفحات به کمک فایل Global.asax رو به شما ارائه بدم.

(روش های دیگری هم برای Route کردن صفحات وجود دارد)

هدف : می خواهیم  آدرس 1 رو به آدرس 2 Route کنیم .

1-www.mysite.com/aboutus.aspx

2-www.mysite.com/aboutus

در ابتدا فایل Global.asax رو به پروژه خود اضافه نمایید و

 namespace    زیر رو به صورت زیر به فایل global اضافه کنید 

<%@ Import Namespace="System.Web.Routing" %>

برای این کار کافیست کد زیر را به Application_Start در  Global.asax اضافه کنید :

 RouteTable.Routes.Add(new Route("aboutus",newPageRouteHandler("~/aboutus.aspx")));

 

توضیح : کلاس Route دو پارامتر به عنوان ورودی می گیرد که پارامتر اول به عنوان الگو و یا pattern می باشد که در این مثال aboutus رو قرار داده ایم .در داخل پروژه هر کجا بخواهید به صفحه aboutus.aspx لینک بدهید باید در href و یا url مورد نظر فقط aboutus رو قرار بدهید در غیر اینصورت با خطای page not fount رو به رو خواهید شد.

پارامتر دوم اشاره دارد به محلی که صفحه مورد نظر در آنجا قرار دارد و در خواست مورد نظر شما رو به صفحه مورد نظر پردازش می کند.

سوال : آیا امکان آدرس دهی به صورت فارسی هست ؟ بله می توانید مثال بالا رو به صورت زیر هم مقدار دهی کنید :

RouteTable.Routes.Add(new Route("درباره ما", new PageRouteHandler("~/aboutus.aspx")));

 و در هنگام آدرس دهدی به صورت زیر عمل می کنیم :

<a href=”درباره ما<"درباره ما</a>

 در صورتی که از در آدرس دهی ها از مقادیر فارسی استفاده میکنید به جای کاراکتر فاصله (space) کاراکتر -  و یا کاراکتر زیر خط (Underline) را بکار ببرید دلیل آن این است که کاراکتر فاصله با کارکترهایی همانند % توسط مرورگر عوض می شود و جلوه ای ناخوانا به وب سایت می دهد پس توصیه می شود به صورت زیر عمل کنید :

<a href="www.learningschool.ir/Articles-2203-مدرسه یادگیری<"طراحی_و_توسعه</a>

 در موارد بالا امکان ارسال مقداری به عنوان query string نیست ، اگر بخواهیم برای صفحه ای مقداری رو هم به عنوان query string ارسال کنیم به صورت زیر عمل می کنیم :

RouteTable.Routes.Add(newRoute("Article{AID}",newPageRouteHandler("~/Article.aspx")));

اما در code behind اگر بخواهید مقدار query string  مورد نظر رو بگیرید باید به صورت زیر عمل کنید :

 Page.RouteData.Values["AID"].ToString();

می توانید بیش از یک query string  برای صفحات تعریف کنید به طور مثال :

 RouteTable.Routes.Add(newRoute("Article{AID}-{GroupID}",newPageRouteHandler("~/Article.aspx")));

پروژه ای به عنوان آموزش بهتر شما تهیه گردیده است .برای دانلود پروژه اینجا کلیک کنید . 


توسط : عثمان رحیمی  2 ماه قبل ، دوشنبه 3 شهریور 1393 ساعت 05:40  2  4387

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط

نظرات خوانندگان

کاربر مهمان (محمد)  در تاریخ : 5 ماه قبل ، دوشنبه 3 آذر 1393 ساعت 00:00

سلام اونوقت مشکل آدرس دهی عکس ها سی اس اس ... چطور حل می کنی اگه میشه جواب رو واسم ایمیل کن

عثمان در تاریخ : 6 ماه قبل ، سه شنبه 11 آذر 1393 ساعت 00:00

می توانید از متد ()ResolveUrl استفاده کنید . توضیحات بیشتر : http://hozhan.ir/Article/30/url-Routing-%D8%AF%D8%B1-ASP.NET/