سؤال

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

هل هذا ممكن؟

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

المحلول

نعم، باستخدام Regex giveacodicetagpre.

لكنك لا تحتاجها حقا لبناء تطبيق صفحة واحدة مع Nancyfx - يمكنك فقط استخدام الحصول على جميع منطق التوجيه الخاص بك ولا يزال لديك تطبيق صفحة واحدة.

نصائح أخرى

Tested in Nancy version 0.23.2

Get[@"/(.*)"] لم يعمل بالنسبة لي كطريق شامل.الطرق "/", "/فو/بار", ، ولن يتم التقاط الطرق الأطول.يبدو أنه لا يوجد مجال للالتفاف حول الحاجة إلى تحديد أ Get["/"] الطريق لعنوان URL الجذر.لا يبدو أن هناك أي شيء آخر يمسك به (حاول Get["{uri*}"]).إليك كيف انتهيت من تحديد مساراتي (ضع في اعتبارك أنني أفعل ذلك من أجل تطبيق Angular):

Get["/views/{uri*}"] = _ => { return "A partial view..."; };
Get["/"] =
Get["/{uri*}"] = _ =>
{
    var uri = (string)_.uri;// The captured route
    // If you're using OWIN, you can also get a reference to the captured route with:
    var environment = this.Context.GetOwinEnvironment();// GetOwinEnvironment is in the 'Nancy.Owin' namespace
    var requestPath = (string)environment["owin.RequestPath"];
    return View["views/defaultLayout.html"];
};

من المهم أن نفهم تسجيل النمط.يتم ترجيح أنماط المسار، إذا تطابق مساران مع نفس مقطع عنوان URL، فستفوز النتيجة الأعلى.يتم ترجيح نمط الالتقاط 0 وعلى الرغم من /views/{uri*} نمط المسار هو أيضًا نمط شامل، فهو يبدأ بالحرف، وهو مرجح 10000, ، لذلك سوف يفوز على جميع الطرق التي تبدأ بـ /الآراء.

إليك المزيد من المعلومات حول الوصول إلى متغيرات بيئة أوين.علماً أنه تم القبض عليه uri متغير و requestPath سوف تكون مختلفة قليلا.ال requestPath سيبدأ ب / في حين أن uri المتغير لن.وأيضًا، إذا كان نمط المسار المطابق Get["/"], uri سوف يكون null و requestPath سوف يكون "/".

ال الآراء سيؤدي المسار إلى إرجاع ملف html جزئي، استنادًا إلى مسار عنوان url، وستعيد جميع المسارات الأخرى صفحة التخطيط الافتراضية التي ستعمل على تشغيل SPA.

إجابة محدثة لم يعمل حل Synhershko.حاول: giveacodicetagpre.

سيؤدي ذلك إلى التقاط جميع المسارات باستثناء صفحة الفهرس.لست متأكدا مما إذا كان هذا سيعمل في سياق الزاوي، ولكن هذا يعمل من أجلي عند محاولة الاختراق جنبا إلى جنب خادم بسيط مع معالج واحد فقط.

الإجابة المقدمة من ssynhershko لا يعمل بالنسبة لي.لا يتوافق / المستخدمين / 2 أو أي مسار آخر يحتوي على المزيد من القطرات.

أدناه الرمز يعمل على جهازي؛): giveacodicetagpre.

حلاي ليس مثاليا، لأنه لا يتطابق مع كل شيء .كررت أكبر عدد ممكن من '/(.*)' كما في أطول طريق الزاوي.

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