Интересно, не лучше ли включить json в данные маршрута и посмотреть его в действии? т. е. при сопоставлении маршрута используйте что-то вроде (для значений по умолчанию):
new { mode="json", controller = "Home", action = "Index", id = "" }
или отобразить маршрут как:
"{mode}/{controller}/{action}"
затем получите доступ к этому в контроллере:
string mode = (string) RouteData.Values["mode"];
(или передать в качестве аргумента)
Кроме этого, вы могли бы написать свой собственный обработчик маршрута, но это большая работа.