J'essaie d'implémenter le routage personnalisé sur une application de base asp.net.Routage personnalisé de base Asp.net
Le résultat souhaité est la suivante:
http://Site_URL/MyController/Action/ {Entity_SEO_Name}/
paramètre Entity_SEO_Name sera une valeur unique enregistrée dans la base de données qu'il va me aider à identifier l'identifiant de l'entité que je J'essaie d'afficher.
Pour y parvenir, j'ai mis en place un itinéraire personnalisé:
routes.MapMyCustomRoute(
name: "DoctorDetails",
template: " {controller=MyController}/{action=TestRoute}/{name?}");
public class MyTemplateRoute : TemplateRoute
{
public override async Task RouteAsync(RouteContext context)
{
//context.RouteData.Values are always empty. Here is the problem.
var seo_name = context.RouteData.Values["Entity_SEO_Name"];
int entityId = 0;
if (seo_name != null)
{
entityId = GetEntityIdFromDB(seo_name);
}
//Here i need to have the id and pass it to controller
context.RouteData.Values["id"] = entityId;
await base.RouteAsync(context);
}
}
Mon contrôleur ActionResult:
public ActionResult TestRoute(int id)
{
var entity = GetEntityById(id);
return Content("");
}
Le problème avec cette approche est que les context.RouteData.Values sont toujours vides . Des idées sur comment aller de l'avant avec celui-ci?