سؤال

أفكر في تعلم ASP.NET MVC إطار المشروع القادم.هل يمكنني استخدام التوجيه المتقدم لإنشاء عناوين URL طويلة بناءً على التسلسل الهرمي لخريطة الموقع؟

مثال لمسار التنقل:

الصفحة الرئيسية > المتجر > المنتجات > منزلي > المطبخ > تجهيزات المطابخ > أطقم الطبخ > غير لاصقة

عنوان URL النموذجي (على ما أظن) لـ MVC:
http://example.com/products/category/NonstickCooksets

عنوان URL المطلوب:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

هل يمكنني فعل هذا؟

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

المحلول

زاك، إذا فهمت بشكل صحيح فأنت تريد عمقًا غير محدود للفئات الفرعية.ليس بالأمر الكبير، منذ MVC Preview 3 (أعتقد 3 أو 4) تم حل هذه المشكلة.

ما عليك سوى تحديد طريق مثل

"{وحدة التحكم}/{الإجراء}/{*categoryPath}"

لعنوان URL مثل:

http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

يجب أن يكون لديك ShopController مع إجراء المنتجات:

public class ShopController : Controller
{
...
    public ActionResult Products(string categoryPath)
    {
        // the categoryPath value would be
        // "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
        // and then decide what you do..
        return View();
    }

نصائح أخرى

يتيح لك توجيه MVC تحديد أي بنية تريدها تقريبًا، ما عليك سوى تحديد ما تعنيه كل قطعة من الأجزاء من الناحية الدلالية.يمكنك الحصول على وحدات بت "مشفرة بشكل ثابت"، مثل "shop/products"، ثم تحديد الباقي كمتغير، "{category}/{subcategory}/{speciality}"، وما إلى ذلك.

يمكنك أيضًا تحديد العديد من المسارات التي يتم تعيينها جميعًا إلى نفس نقطة النهاية إذا أردت.في الأساس، عندما يأتي عنوان URL إلى تطبيق MVC الخاص بك، فإنه يمر عبر جدول التوجيه حتى يجد النمط المطابق، ويملأ المتغيرات ويمرر الطلب إلى وحدة التحكم المناسبة للمعالجة.

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

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