27 messaggi dal 22 settembre 2015
Salve, avrei la necessità di cambiare il routing di default della mia applicazione web MVC togliendo il nome del controller, cioè anzichè avere
l'url con nomesito/nome controller/nome action,
vorrei avere l'url con nomesito/nome action.
Ho provato a cambiare qualcosa nel RouteConfig.cs ma ottengo sempre il vecchio risultato cioè nomesito/nome controller/nome action.
Grazie in anticipo a chi volesse aiutarmi.
Ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Ho provato a cambiare qualcosa nel RouteConfig.cs

Ok, sei sulla strada giusta. Devi giusto togliere il segnaposto {controller} dall'url template. La tua route di default dunque diventa:
routes.MapRoute(
    name: "Default",
    url: "{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Dato che il controller è impostato su "Home" dai valori di default, ASP.NET MVC andrà a cercare tutte le action in quel controller.

ciao,
Moreno

Enjoy learning and just keep making
27 messaggi dal 22 settembre 2015
ciao grazie per la risposta, ho fatto come hai detto tu, in realtà l'ho applicato ad una pagina denominata "ChiSiamo" ma mi da ancora il seguente errore:

" Descrizione: HTTP 404. La risorsa che si sta cercando (o una delle sue dipendenze) potrebbe essere stata rimossa, rinominata o non essere temporaneamente disponibile. Verificare che l'URL riportato di seguito sia stato digitato correttamente.

URL richiesto: / "


Di seguito ti allego il mio Routeconfig:

namespace MiaApplicazione
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "ChiSiamo",
url: "{action}/{id}",
defaults: new { controller = "MioController", action = "ChiSiamo", id = UrlParameter.Optional }
);


routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}

Come posso risolvere?
Ciao e grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, non sapevo avessi definito una seconda route.
Comunque, a me funziona, devi solo scrivere "Mio", anziché "MioController"

routes.MapRoute(
name: "ChiSiamo",
url: "{action}/{id}",
defaults: new { controller = "Mio", action = "ChiSiamo", id = UrlParameter.Optional }
);


Qui però avrai un problema nel momento in cui vorrai andare a visitare /Home/Index. Infatti, questa prima route "ChiSiamo" è conforme ad un url del tipo "/Home/Index", infatti Home verrà considerato come il nome dell'action e Index come l'id.
Se vuoi evitarlo, devi mettere un constraint su id per imporre, ad esempio, che sia numerico. A quel punto, dato che Index non è numerico, il servizio di routing userà la tua seconda route.

Ecco qui come configurare un constraint su id per imporre che sia numerico, usando un'espressione regolare.
routes.MapRoute(
    name: "Chi siamo",
    url: "{action}/{id}",
    defaults: new { controller = "Mio", action = "ChiSiamo", id = UrlParameter.Optional },
    constraints: new { id = "^[0-9]*$" }
);

Enjoy learning and just keep making
27 messaggi dal 22 settembre 2015
Grazie mille per la risposta, ho risolto!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.