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!

Était-ce utile?

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
    );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top