2010-12-12 9 views
4

J'ai une table appelée Catégories. Je souhaite que l'utilisateur clique sur une liste de catégories, puis charge une liste de toutes les enchères dans cette catégorie.Comment puis-je accomplir ce type d'URL dans ASP.Net MVC2?

Assez simple, non?

je pourrais créer une action pour chaque catégorie, quelque chose comme:

public ActionResult Cellphones() 
public ActionResult Electronics 
public ActionResult Clothes 
public ActionResult Cars 
public ActionResult RealEstate 

Cela générerait des URL comme:/Enchères/Vêtements et/Enchères/RealEstate. Exactement ce que je cherche.

Le problème est que cela nécessite un bricolage manuel. Lorsque j'ajoute une catégorie, je dois créer manuellement une nouvelle action et ensuite une nouvelle vue pour celle-ci.

Y a-t-il une meilleure façon de procéder?

Répondre

4

Créer un ActionResult:

public class AuctionController : Controller 
{ 
    public ActionResult AuctionCategoryDetails(string categoryName) 
    { 
     var model = repository.GetAuctionsForCategory(categoryName); 
     return View(model); 
    } 
} 

Ensuite, créez un itinéraire:

routes.MapRoute(
    "AuctionCategoryDetails", 
    "Auctions/{categoryName}", 
    new { controller = "Auction", action = "AuctionCategoryDetails" }); 

Ainsi, lorsque votre affiche une liste des catégories (détails non individuels);

<% foreach (var category in Model.Categories) { %> 
    <%: Html.RouteLink("Category Details", "AuctionCategoryDetails", new { categoryName = category.CategoryName }); 
<% } %> 

qui produira une liste de liens comme celui-ci:

<a href="/Auctions/Clothes">Category Details</a> 
<a href="/Auctions/RealEstate">Category Details</a> 

Est-ce que votre après?

+0

Des échantillons de code bizarres sur Stack ont ​​été foirés ces deux derniers jours. – RPM1984

+1

Oui, exactement! Je vais le transformer en ce que je cherche. Merci beaucoup pour votre aide! :) –

+0

Pas de problème. :) – RPM1984

1

Oui, cela s'appelle le routage URL. Vous mappez vos catégories en une seule action AuctionController, qui sert et affiche dynamiquement les données de catégorie en fonction de ce qui se trouve dans l'URL.

Il ya un tutoriel sur the ASP.NET MVC site qui couvre les bases du sol.

+0

Salut merci de partager ce lien. J'ai peur de ne pas vraiment comprendre comment utiliser le routage pour atteindre mon objectif. Puis-je vous déranger pour plus de conseils? Je vous remercie. –

+2

@Serg: L'exemple de code de RPM1984 est sympa. – BoltClock