So ordnen Sie meinem Newscontroller eine Route für / News / 5 zu
-
27-10-2019 - |
Frage
Ich versuche herauszufinden, wie ich meinem Newscontroller eine Route für / News / 5 zuordnen kann.
Dies ist mein NewsController:
public class NewsController : BaseController
{
//
// GET: /News
public ActionResult Index(int id)
{
return View();
}
}
Dies ist meine Global.asax.cs-Regel:
routes.MapRoute(
"News", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "News", action = "Index", id = -1 } // Parameter defaults
);
Ich versuche, zu / News / 5 zu wechseln, erhalte jedoch einen Fehler, bei dem die Ressource nicht gefunden wurde. Wenn ich jedoch zu / News / Index / 5 gehe, funktioniert dies?
Ich habe nur {controller}/{id}
ausprobiert, aber das hat nur das gleiche Problem verursacht.
Danke!
Lösung
Ihre {controller}/{id}
-Route war korrekt, aber Sie haben sie wahrscheinlich NACH der anderen Route registriert.In der Routenliste wird von oben nach unten gesucht und das erste gefundene Spiel gewinnt.
Um das Routing zu steuern, würde ich vorschlagen, Routenbeschränkungen dafür zu erstellen, um sicherzustellen, dass # 1 der Controller vorhanden ist und # 2 der {id}
eine Zahl ist.
Siehe diesen Artikel
Andere Tipps
Sie müssen sicherstellen, dass Ihre neue Route vor Ihrer Standardroute liegt, wie folgt:
routes.MapRoute(
"NewsAbbr", // Route name
"{controller}/{id}", // URL with parameters
new { controller = "News", action = "Index", id = -1 } // Parameter defaults
);
routes.MapRoute(
"News", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "News", action = "Index", id = -1 } // Parameter defaults
);