سؤال

قرأت هذا مقالة حول كيف يمكنك اختصار الطرق في روبي على القضبان.أريد أن أكون قادرة على أن تفعل الشيء نفسه مع asp.net mvc

إذا كنت تريد أن تكون قادرة على تحديد الطريق مثل :

/photographers/1/photos/2   //photo 2 of photographer with id 1
/photographers/1/photos     //all of photographer with id 1

أي نصائح ؟

تحرير:

"المصورين/{id}/صور/{photoID}" - يبدو للقيام بهذه المهمة جدا موافق لكن كيف يمكنني دعم

RedirectToAction<PhotosController>(x => x.Add());

وأود أن إعادة توجيه إلى :/مصورين/1/الصور/إضافة

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

المحلول

تحديد المسار الخاص بك مثل هذا:

routes.MapRoute(
    "Photographers",
    "photographers/{id}/photos/{photoID}",
    new { controller = "Photographers", action = "Photo", photoID = null });

ثم تحديد جهاز تحكم عمل مثل هذا:

public ActionResult Photo(int id, int? photoID)
{
    // If photoID is not null, show just that photo.
    // Otherwise, show all photographs.
}

نصائح أخرى

هل يمكن استخدام regex التوجيه أو استخدام البدل في جدول التوجيه بحيث {id*} يطابق /1/photos/2 على المصورين الافتراضي تحكم, تحليل السلسلة ، وإعادة توجيه إلى إجراء مناسب.

أيضا أن تأخذ نظرة على هذا بعد حوالي متداخلة الموارد.

RouteTable.Routes.Add(
        new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                    Defaults = new { controller = "Tickets", 
                                     action = "List", id = (string)null }, 
                    RouteHandler = typeof(MvcRouteHandler) });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top