2010-12-14 3 views
2

Mögliche Duplizieren:
How can I accomplish this type of URL in ASP.Net MVC2?URL angezeigt wird einfach nicht, was ich will

Ich möchte HTML-Links erstellen wie:

/Auctions/Clothes 
/Auctions/Electronics 
/Auctions/Real Estate 

Hier ist, wie ich bin Erstellen der Links:

Die Probleme sind die Links wie folgt verwendet werden:

http://localhost:8589/Anuncios?category=Libros 

Ich möchte meine URLS gut aussehende, als solche sein ich die oben möchte wie sein:

/Anuncios/Libros 

Irgendwelche Vorschläge, wie Sie das beheben können? Hier ist die ActionResult-Methode, und um dies zu verdeutlichen, tut sie genau das, was ich möchte. Es funktioniert, außer die URL ist schrecklich.

public ActionResult Index(string category) 
{    
    AuctionRepository auctionRepo = new AuctionRepository(); 
    var auctions = auctionRepo.FindAllAuctions().Where(a => a.Subcategory.Category.Name == category); 
    return View(auctions); 
} 
+0

Wie ist Ihre Route konfiguriert? –

+0

Nicht konfiguriert (in der Global.asax-Datei), wenn Sie das meinen. Vorschläge? –

+2

Wenn Sie keine Routen konfiguriert haben, wie erwarten Sie dann, dass MVC weiß, wie Ihre URLs aussehen sollen? –

Antwort

0

Bitte beachten Sie diese Frage zur Umsetzung Ihrer Anforderung.

EDIT:

erstellen Sie einen neuen HTML-Helfer, den Sie das Menü wie diese

public static class MyMenuHelper { 
    public static string MyMenu(this HtmlHelper helper) { 
     List<Category> categories = GetCategories(); 
     foreach (Category c in categories) { 
      helper.RouteLink(c.Name, "AuctionCategoryDetails", new { categoryName = c.Name }); 
     } 
    } 
} 

schließlich in Ihrer _Layout Seite verwenden Sie es verwendet machen wie dieses

+0

Hallo Lorenzo, vielen Dank für deine Hilfe. Die Variable, die Sie aufrufen, ist nicht verfügbar. Vielleicht ein Tippfehler? Ich sehe auch, dass die Methode eine Zeichenfolge zurückgibt, aber sie gibt nie etwas zurück. Irgendwelche Ideen? –

+0

Ja! Es war ein Tippfehler. Es sollte "Helfer" sein. Ich habe die Antwort bearbeitet – Lorenzo

+0

Bitte seien Sie vorsichtig, dass Sie keine Leerzeichen in der URL haben können. Wenn dies der Fall ist, entfernen Sie einfach das Leerzeichen aus dem Kategorienamen, den Sie auf den dritten Parameter von RouteLink setzen. – Lorenzo

-1

Sie müssen einige Routen hinzufügen, damit MVC weiß, wie Sie die Links aussehen würden. Es ist nicht so, als könnte es deine Gedanken lesen oder Kaffee kochen.

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapRoute(
     "Anuncios",     // Route name 
     "Anuncios/{category}",  // URL with parameters 
     new { category = "Index" } // Parameter defaults 
    ); 
} 
+0

Dies beantwortet die Frage nicht. es erklärt nur, wie man eine Route erstellt ... – Lorenzo

+1

wie kann das nicht eine Antwort sein ... sein Problem ist, dass er keine Routen erstellt haben, also zeige ich ihm, wie man Routen hinzufügt, damit die ActionLink-Methode das gewünschte rendern kann URLs. –

+0

Sein Problem ist klar (sehr deutlich) in der ersten Zeile angegeben. Und es scheint mir nicht so, als würde er nach einer generischen Route suchen. Darüber hinaus ist die Lösung nicht so, wie Sie es beschrieben haben, da Ihre Lösung eine variable Anzahl von Routen (eine für jede Kategorie) erstellen und somit möglicherweise zu einer mehrfachen Änderung des Codes führen würde, wenn eine neue Kategorie hinzugefügt würde. – Lorenzo