Domanda

Mi chiedevo se potevo creare una mappa di routing con un livello più alto rispetto al controller. L'instradamento tipico dovrebbe includere "quotation / controller / action / id". Quello che sto cercando è qualcosa come " sezione / controller / azione / id " o "controller / sezione / azione / ID". Come posso farlo?

È stato utile?

Soluzione

Nessun problema. Basta creare una route il cui URL è, ad esempio

path / to / mio / application / {Controller} / {action} / {id}

... e fornisce un controller e un'azione predefiniti come al solito.

Un esempio concreto di ciò è

context.MapRoute(
    "Admin_default",
    "admin/{controller}/{action}/{id}",
    new { controller = "AdminHome", action = "Index", id = "" }
);

In questo modo verranno mappati, ad esempio, i seguenti URL:

/admin/                   => AdminHomeController.Index
/admin/adminhome/         => AdminHomeController.Index
/admin/other/             => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)

Si noti, tuttavia, che se si dispone anche di un percorso predefinito, ad esempio in questo modo:

context.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

... quindi anche i metodi di azione del controller nel routing Admin possono essere accessibili tramite questa route. Utilizza Debuger di routing URL per scoprirlo con certezza .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top