إخفاء إمتداد الصفحات في الـ ASP.NET

10 أكتوبر 2016     560 مشاهدة    0 تعليق
تم النشر في #Routing  #Tips & Tricks 

قد يرى الكثير مننا أثناء تصفح بعض المواقع الإلكترونيه بعض الإمتدادات مثل aspx أو php أو غيرهما, لكن قد يستغرب البعض من عدم وجود أي إمتداد للصفحه التي يقوم بإستعراضها. فأحببت في هذا المقال أن استعرض كيفية عمل نفس الشيء بتقنية الـ ASP.NET.

الفكرة التي سنتطرق لها لإخفاء إمتداد الصفحات بإستخدام مفهوم الـ URL Routing وهي آليه نستطيع من خلالها توجيه رابط معين إلى رابط آخر يتم تعريفه مسبقاً. وكما هو من المعلوم أن مفهوم الـ Routing مدعوم في تقنية الـ ASP.NET من الإصدار 3.5 SP1 وما فوق, فأرجو أخذ هذه النقطه في عين الإعتبار إن أردت أن تطبق المثال أدناه.

أولاُ نقوم بإضافة ملف الـ Global.asax في حال عدم وجوده في المشروع, من ثم نقوم بعمل التالي:

<%@ Application Language="VB" %>
<%@ Import Namespace="System.Web.Routing" %>
<script RunAt="server">
    Private Sub Application_Start(sender As Object, e As EventArgs)
        RegisterRoutes(RouteTable.Routes)
    End Sub
 
    Private Shared Sub RegisterRoutes(routes As RouteCollection)
        routes.MapPageRoute("Products", "Products", "~/Products.aspx")
    End Sub
</script>

في المثال أعلاه تم تسجيل ال Route بإسم Products في جدول التوجيه, ليقوم بتوجيه الرابط Products إلى Products.aspx. طبعاَ نلاحظ أنه تم التسجيل في بداية تشغيل التطبيق ليتم التعرف عليه أثناء وقت التشغيل.

والآن يمكنك بسهولة إستعراض الرابط http://localhost:5000/Products والذي بدوره سيتوجه إلى الصفحة Products.aspx التي تم تعريفها سابقاً في جدول التوجيه.

هذا فقط؟ بالطبع!! هذه هي الشيفرة المصدرية اللازمه لعمل هذا الشيء. لكن قد يتسأل البعض كيف يمكنني تمرير قيمه أو قيم معينه للصفحه المراد التوجيه إليها, ببساطه يمكنك فعل هذا الشيء على النحو التالي:

Private Shared Sub RegisterRoutes(routes As RouteCollection)
    routes.MapPageRoute("ProductDetails", "Products/{ProductId}", "~/ProductDetails.aspx")
End Sub

وأخيراُ يمكن جلب قيمة المتغير ProductId بإستخدام Page.RouteData.Values["ProductId"].

للمعلوميه يمكن عمل المطلوب السابق بإستخدام الـ Url Rewrite وهنالك Http Module في الـ IIS تمكنك من عمل هذا الشيء, فأترك الموضوع للمحاوله.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك