2009-03-17 16 views
1

Ich habe einen Anruf, der wie folgt aussieht:Html.RouteLink Ausgabe - ASP.NET MVC C#

<%= Html.RouteLink(item.displayName, "DisplayCategory", new { category = Html.Encode(item.displayName), subcat = item.searchName }) %> 

und ich bin immer html, die wie folgt aussieht:

http://localhost:1485/Home/ShowCategory/Electronics%20&%20Photography?subcat=electronics-photo 

Warum das tut URL endet mit "? Subcat = electronics-photo" anstatt "/ electronics-photo"? Hat es irgendwie mit der Routendefinition zu tun?

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "" } 
    ); 

Alle Hinweise würden geschätzt werden!

Antwort

0

Ich nehme nur einen Stich, aber es sieht so aus, als ob Sie das MVC-Framework verwenden.

Darin hat jeder Controller eine Aktion, in diesem Fall ShowCategory, und standardmäßig nehmen sie eine Abfragezeichenfolge, in diesem Fall Kategorie. MVC abstrahiert absichtlich die Ordnerstruktur. Ich glaube, dass eine MVC-App immer eine URL dieses Typs und der Tiefe domain.ext/Controller/Action? QueryString haben wird.

Ich denke, die Frage kann sein, ob der Subcat richtig eingestellt ist oder nicht. Ein wenig mehr Info/Code könnte hoffnungsvoll sein.

Tut mir auch leid, dass ich den Routing-Teil Ihrer Frage nicht angesprochen habe.

+0

Danke für die Antwort. Ja, ich benutze MVC ... worüber ich verwirrt bin ist, warum es? QueryString erstellt, anstatt nur ein weiteres '/' hinzuzufügen und make/queryString. –

+0

MVC verwendet eine Abfragezeichenfolge, um Parameter an die Aktion zu übergeben. Das '/' wird nur für den Zugriff auf Unterordner verwendet, außer in MVC haben Sie nur die Controller- und Aktionsordner. – user58044

2

Das MVC-Routing wendet auf eine Abfragezeichenfolge an, wenn es nicht mit einem der Parameter in der Routendefinition übereinstimmen kann. Versuchen Sie, subcat zu Ihrer Route hinzuzufügen:

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}/{subcat}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "", subcat = "" } 
    );