Я сталкиваюсь с ситуацией, когда «полностью определенный» маршрут не генерируется, когда это необходимо. Следующий код демонстрирует проблему:
var junk = Url.Action("Index2", "Reference", new { area = "Admin" });
junk = Url.Action("Index", "Reference", new { area = "Admin", memberID = 47 });
Первый вызов Url.Action () создает / Admin / Reference / Index2 . Второй вызов выдает / Admin / Reference , я полагаю, потому что "Index" является идентификатором по умолчанию.
К сожалению, отображение маршрута (которое я не изменял, так как оно было сгенерировано VS2010), конечно, обработает второй маршрут как вызов метода Reference на контроллере Admin в корневой области. Определитель маршрутов никак не может знать, что вторая ссылка действительно предназначена для обработчика индекса эталонного контроллера в области администратора.
Один очевидный обходной путь - не использовать метод Index в контроллере внутри области. Но это кажется уродливым. Я заинтересован в лучшем / более надежном подходе.