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!

War es hilfreich?

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

Hauptsächlich:

 routes.MapRoute( 
        "Index Action", // Route name 
        "{controller}/{id}", // URL with parameters EDIT: forgot starting "
        new { controller = "News", action = "Index" },
        new {id= @"\d+" }
    ); 

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
    );

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top