إعادة كتابة عنوان URL الخاص بـ ASP.NET وإنشاء روابط الصفحات

StackOverflow https://stackoverflow.com/questions/87221

سؤال

لذلك هذا المنصب تحدثت عن كيفية التنفيذ الفعلي لإعادة كتابة عنوان URL في تطبيق ASP.NET للحصول على "عناوين URL سهلة الاستخدام".يعمل هذا بشكل مثالي وهو أمر رائع لإرسال مستخدم إلى صفحة معينة، ولكن هل يعرف أي شخص حلاً جيدًا لإنشاء عناوين URL "صديقة" داخل التعليمات البرمجية الخاصة بك عند استخدام إحدى الأدوات المشار إليها؟

على سبيل المثال، فإن إدراج رابط داخل عنصر تحكم asp.net كـ ~/mypage.aspx?product=12 عند وجود قاعدة إعادة كتابة سيكون مشكلة حيث أنك تقوم بالربط بالمحتوى بطريقتين مختلفتين.

أنا على دراية باستخدام DotNetNuke وFriendlyUrl حيث توجد طريقة "NavigateUrl" التي ستحصل على رمز URL المألوف من مُعيد الكتابة ولكنني لم أجد أمثلة لكيفية القيام بذلك باستخدام UrlRewriting.net أو الحلول الأخرى. هناك.

من الناحية المثالية، أود أن أكون قادرًا على الحصول على شيء كهذا.

string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");

يحرر: أنا أبحث عن حل عام، وليس شيئًا يجب علي تنفيذه لكل صفحة في موقعي، ولكن من المحتمل أن يكون حلًا يمكن أن يتوافق مع القواعد في الاتجاه المعاكس.

هل كانت مفيدة؟

المحلول

يرى System.Web.Routing

التوجيه يختلف عن إعادة الكتابة.يتطلب تنفيذ هذه التقنية إجراء تغييرات طفيفة على صفحاتك (على وجه التحديد، يجب تعديل أي تعليمات برمجية تصل إلى معلمات سلسلة الاستعلام)، ولكنها تسمح لك بإنشاء روابط بناءً على المسارات التي تحددها.يتم استخدامه بواسطة ASP.NET MVC، ولكن يمكن استخدامه في أي تطبيق ASP.NET.

يعد التوجيه جزءًا من .Net 3.5 SP1

نصائح أخرى

أنشئ فئة UrlBuilder بطرق لكل صفحة كما يلي:

public class UrlBuilder
{
    public static string BuildProductUrl(int id)
    {
        if (true) // replace with logic to determine if URL rewriting is enabled
        {
            return string.Format("~/Product/{0}", id);
        }
        else
        {
            return string.Format("~/product.aspx?id={0}", id);
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top