2010-07-13 5 views
1

J'essaie d'écrire des animaux à partir d'une base de données. Tous les exemples que je vois pour créer des pages d'affichage ont des «nœuds» codés en dur dans les URL. Je peux avoir ma première vue à travailler mais mon deuxième n'écrit pas l'URL correcte pour aller au troisième. Ainsi, par exemple, je veux que mes URL à:Problèmes de création d'URL dans une vue VB.NET MVC

/animals/ 
/animals/canines/ 
/animals/canines/schnauzer 

J'ai la configuration de la route par défaut:

> routes.MapRoute(_ 
>    "Default", _ 
>    "{controller}/{action}/{id}", _ 
>    New With {.controller = "Home", .action = "Index", .id = 
> UrlParameter.Optional} _ 
>  ) 

La première URL fonctionne très bien et je peux énumérer les groupes d'animaux sur le premier long avec les liens corrects aux secondes URL. Je le fais comme suit:

for each animal in model 
    Html.ActionLink(animal.animal_name,animal.animal_name.Trim) 
next 

Je peux aussi obtenir les groupes canins écrits sur le second (donc je sais que mon modèle fonctionne), mais le URL.Action sur cette seconde « canidés page » perd la " « canins dans l'URL afin qu'elle rend comme:

/animals/schnauzer 

J'ai essayé tous les moyens que je peux penser à écrire le lien comprenant:

<a href="<%= url.action(canine.dog_name.Trim)) %>"> 
<a href="<%= Url.Content("~" & url.action(canine.dog_name.Trim)) %>"> 

et quelques autres qui ne valent pas la peine d'être montrés. ;-D

... Je suppose qu'il me manque quelque chose dans un chemin d'itinéraire mais qu'est-ce que c'est? Il ne peut pas être que je dois connaître le chemin que je suis sur chaque page afin d'écrire l'URL - peut-il?

Merci d'avance pour votre aide!

Répondre

0

La route que vous avez configurée recherche trois composants, un contrôleur, une action et un identifiant. Dans votre cas/animals/schnauzer, vous recherchez plus d'un seul élément de routage en ce qui concerne le routage HTTP (et la génération de liens). Il voit/animals/canines comme deux valeurs différentes. Si vous cherchez à permettre une route comme http://yoursite/Family/Species, spécifiez comme tel:

routes.mapRoute("familyspecies", "animals/{family}/{species}", new { controller = "Home", action = "Animals", Species = UrlParameter.Optional}); 

et passer la famille et les espèces pour vos actions

public ActionResult Animals(string family, string species){...} 

OU Utiliser des itinéraires génériques pour tout diriger après l'action à l'ID

routes.MapRoute("{controller}/{action}/{*id}"); 
Questions connexes