Questo non funziona quando l'URL è come questo localhost: 2474/SOProblems/SubFolder/ChildController/index
Questo è normale. Il modello di instradamento si presenta così: SubFolder/ChildController
e non SubFolder/ChildController/index
. In aggiunta a ciò hai definito il tuo percorso nel posto sbagliato. Lo hai definito nelle definizioni della tua rotta principale e non nelle definizioni di percorso della tua zona. Così sbarazzarsi della definizione percorso personalizzato da percorsi principali e aggiungerlo al file SOProblemsAreaRegistration.cs
(che è dove devono essere registrati i tuoi SOProblems
delle vie aeree):
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"SubFolderRoute",
"SOProblems/SubFolder/ChildController",
new { controller = "ChildController", action = "Index" },
new[] { "Practise.Areas.SOProblems.Controllers.SubFolder" }
);
context.MapRoute(
"SOProblems_default",
"SOProblems/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Anche perché il vostro modello di percorso (SOProblems/SubFolder/ChildController
) non ha la possibilità di specificare un nome dell'azione, è possibile avere solo un'azione su questo controller e quella sarebbe l'azione predefinita registrata (index
) in questo caso.
Se si voleva avere più azioni su questo controller e tuttavia indice di essere quello di default si dovrebbe includere che nel vostro modello di percorso:
context.MapRoute(
"SubFolder",
"SOProblems/SubFolder/ChildController/{action}",
new { controller = "ChildController", action = "Index" },
new[] { "Practise.Areas.SOProblems.Controllers.SubFolder" }
);
In entrambi i casi la tua definizione della rotta principale potrebbe rimanere con i loro valori di default :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" }
);
}
fonte
2013-06-21 15:14:42
"Non funziona", che significa esattamente? – TGlatzer
@ Grumbler85 - l'ultimo URL provato dà 404, –
L'apice è solo "Sottocartella"/ChildController "? E controlla che lo spazio dei nomi all'interno della sottocartella sia impostato correttamente. – TGlatzer