Ich versuche, benutzerdefinierte Routing auf einer asp.net Core-Anwendung zu implementieren.Asp.net Kern Benutzerdefinierte Routing
Das gewünschte Ergebnis ist die folgende:
http://Site_URL/MyController/Action/ {Entity_SEO_Name}/
Entity_SEO_Name Parameter wird ein eindeutiger Wert in der Datenbank gespeichert werden, dass es mich zu identifizieren die ID des Unternehmens helfen wird, dass ich versuche zu zeigen.
Um zu erreichen, dass ich eine benutzerdefinierte Route umgesetzt habe:
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);
}
}
Meine Controller Action:
public ActionResult TestRoute(int id)
{
var entity = GetEntityById(id);
return Content("");
}
Das Problem bei diesem Ansatz ist, dass die context.RouteData.Values immer leer sind . Irgendwelche Ideen, wie man mit diesem voranbringt?