2010-11-23 15 views
0

Je viens de créer un contrôleur SiteMap qui génère un sitemap pour mon site. J'essaie de sortir l'url des produits que j'ai énumérés tout au long du site. Dans mes produits de liste par exemple, j'ai ce code:Pourquoi mes URL de routage ne correspondent-elles pas dans différents contrôleurs?

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) }) 

qui sort cette url:

/products/détails/1330/sandee-bleu-petit-Camo-short

qui mappe à cet itinéraire:

routes.MapRoute(

     "ViewProduct", 

     "products/{cat}/{id}/{productName}", 

     new { controller = "products", action = "Details", cat = "", id = "", productName = "" }, 

     new string[] { "EliteFightKit.Web.Controllers" } 

    ); 

Dans mon contrôleur SiteMap mais je suis en utilisant ce code pour générer l'url:

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) }) 

et il est sortie ceci:

/produits/détails/1330 productname = sandee-bleu-petits-Camo-short

où suis-je pas, comment puis-je obtenir l'URL SiteMap pour corrèlent avec l'URL créée dans la vue de ma liste de produits?

Lloyd

Répondre

1

Votre route n'est pas valide. Les paramètres facultatifs ne peuvent apparaître qu'à la fin. Dans votre cas, vous avez le paramètre route cat qui est l'option et qui est au milieu de l'URL. Vous devez donc fournir une valeur pour ce paramètre si vous souhaitez que cette route soit sélectionnée à la place de celle par défaut:

Url.Action("Details", "Products", 
    new { id = "123", productName = "foo", cat = "bar" }) 
+0

Bonne prise! Merci, complètement raté celui-là, regardait pendant environ une heure la nuit dernière, un autre ne peut pas voir le bois pour le moment des arbres. Appréciez votre temps, merci beaucoup! – lloydphillips