Comment tracer une voie pour / Nouvelles / 5 à mon contrôleur de nouvelles
-
27-10-2019 - |
Question
Je suis en train de déterminer comment la carte un itinéraire pour / Nouvelles / 5 à mon contrôleur de nouvelles.
Ceci est mon NewsController:
public class NewsController : BaseController
{
//
// GET: /News
public ActionResult Index(int id)
{
return View();
}
}
Ceci est ma règle Global.asax.cs:
routes.MapRoute(
"News", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "News", action = "Index", id = -1 } // Parameter defaults
);
J'essaie d'aller / Nouvelles / 5 mais je reçois une ressource introuvable erreur, mais quand va / Nouvelles / Index / 5 cela fonctionne?
Je l'ai essayé à peu {controller}/{id}
mais que vient de produire la même question.
Merci!
La solution
Votre itinéraire {controller}/{id}
était correct, mais vous vous êtes inscrit problaby après l'autre voie. Dans la liste des routes il recherche haut en bas et le premier match qu'il trouve gagne.
Pour aider à orienter le routage Je suggère la création de contraintes de route pour ce faire en sorte que # 1 le contrôleur existe et # 2 le {id}
est un nombre.
Voir cet article
Principalement:
routes.MapRoute(
"Index Action", // Route name
"{controller}/{id}", // URL with parameters EDIT: forgot starting "
new { controller = "News", action = "Index" },
new {id= @"\d+" }
);
Autres conseils
Vous devez vous assurer que votre nouvel itinéraire est avant votre route par défaut, comme suit:
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
);