سؤال

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

Page1
 - Page2
 - Page3
Page4
 - Page5
 -- Page6

الآن ، أريد أن تكون طريقي للصفحة 3 و Page6 مثل /Page1/Page6 و /Page3/Page5/Page6 احترام. وهذا هو ، أريد أن أدرج جميع الآباء في عنوان URL.

كيفية ضبط إجراء وحدة التحكم/التوجيه لتحقيق النتيجة أعلاه؟

تحرير: نسيت أن نذكر أن الهيكل أعلاه سيكون ديناميكيًا - يمكن إضافة العقد/حذفه/تغيير الوالد ، إلخ.

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

المحلول

يمكنك استخدام مباراة البدل.

طريق ممكن:

routes.MapRoute("SomeName", "{*Page}", new { controller = "ControllerName", action = "ActionName" });

وفي الإجراء ، اقبل صفحة السلسلة ، وحوضها يدويًا ، ربما مع انقسام؟

قد يكون هذا مفيدًا أيضًا: توجيه URL

نصائح أخرى

لاحظ أن اسم وحدة التحكم وإجراءاته ثابتة ولا يعتمد على عنوان URL.

// place the more specific route first
routes.MapRoute("r1", "{parent}/{child}/{subchild}", 
    new { controller = "Page", action = "Index", parent = parent, child = child, subchild = subchild });

routes.MapRoute("r2", "{parent}/{child}", 
    new { controller = "Page", action = "Index", parent = parent, child = child });


public class PageController
{
    public ActionResult Index(string parent, string child, string? subchild)
    {
        // stuff
    }
}

يجب أن تستخدم

routes.MapRoute("Page6", "Page3/Page5/Page6", new { controller = "Page6", action = "Index" });

أو ربما استخدام توجيه التعبير العادي

http://blog.sb2.fr/post/2009/01/03/regular-expression-maproute-with-aspnet-mvc.aspx

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