سؤال

وأنا أعمل على المشروع الذي يحتاج للاستيلاء على URL الفعلي واستخدامه في الطريق نفسه. كل ما أرى، والقراءة والاختبار يسمح الطريق للاستيلاء على البنود بعد URL الموقع. هذا هو ما كنت قد حاولت في كل مرة وبكل بساطة يقول الموقع فارغ (الذي هو على الارجح بسبب الافتراضي فارغة). يمكنك رمي لي أي عظام على السماح الطريق إلى الاستفادة أيضا URL الجذر؟ والهدف هو موقع واحد من شأنها أن معالجة URL والطريق لي أن الشجاعة مختلفة مرة واحدة داخل عرض.

وهنا هو رمز لقد حاولت ولكن لم الحظ خارج المضيف المحلي

            routes.MapRoute(
            "PageRouter",
            "{site}/{*url}",
            new { controller = "PageRouter", action = "RoutePage", site = "", url = "" }
        );

وهو موضع تقدير كبير مساعدتكم. شكرا مقدما

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

المحلول

وماذا عن مجرد استخدام HttpContext.Request.RawUrl داخل عمل وحدة تحكم. قد أكون في عداد المفقودين شيء هنا. أين هو رابط كنت ترغب في قراءة قادمة من؟ هل من الصفحة الحالية أو صفحة أخرى؟

نصائح أخرى

والجواب ناثان هي جزء من الجواب. وHttpContext.Request.RawUrl يسمح بالوصول إلى هذه المعلومات ولكن في ملف Global.asax.cs بدلا من ذلك. يتم ذلك في الحدث Application_BeginRequest. ولكن خدعة (ويرجى التعليق اذا كان هناك من يعرف طريقة أكثر أناقة للقيام بذلك) لكننا حقن رابط المستخدمة في مسار الطريق المتبقية بحيث يمكن التقطت في طريقة MapRoute. وبالتالي فإن الموقع " http://subdomain.domain.net/url " ثم تظهر ك "< وأ href = "http://subdomain.domain.net/subdomain.domain.net/url" يختلط = "نوفولو noreferrer"> http://subdomain.domain.net/subdomain.domain.net/url لذلك يمكن التقاطها في {موقع} جزء من الأمر MapRoute. لن يظهر هذا للمستخدم ولكن بعد ذلك يسمح لنا لاتخاذ القرارات داخل التطبيق على أساس URL الواردة. هل هذا عاقل سليم؟ التعليقات هي موضع ترحيب إذا كان هذا يبدو بطريقة مجنونة للقيام بذلك من أجل استيعاب رابط الجذر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top