2013-03-20 2 views
1

Existe-t-il un moyen dans ASP.NET MVC de générer une URL avec un Html.helper sans spécifiant l'action (et l'acheminant ainsi vers l'action par défaut) ?ASP.NET MVC: Html helper pour générer l'URL sans action spécifiée

Fondamentalement, je veux une url qui affiche {lang}/contrôleur, à savoir: ~/EN/Accueil

Mais chaque html-helper dans MVC semble exiger de spécifier une action de contrôleur spécifique, même

<a href="@Url.Action(null, @Resources.Home">Click here</a> 

sorties FR/Accueil/PartialViewName au lieu d'eN/Home .... (je générer sur une vue partielle)

MISE à JOUR 1:

apparemment, le "Index" l'action ne se présente pas dans l'URL générée, à savoir:

@Html.ActionLink("Click here", "Index", @Resources.Home) 

sorties/FR/Accueil

mais si vous voulez ajouter des paramètres, le problème reste le même malheureusement. Non de la sortie suite à l'URL correcte (c.-à-EN/Accueil/3)

@Html.ActionLink("Click here", "Index", @Resources.Home, new { id = home.Id }, null) 

<a href="@Url.Action(null, @Resources.Home)/@home.Id">Click here</a> 

MISE À JOUR 2:

a résolu le problème pour l'instant comme ceci:

@Html.ActionLink("Click here", "Index", string.Format(Resources.Home + "/" + home.Id)) 

mais qui ne peut pas être la seule solution correcte pour ce problème?

Répondre

0

Que diriez-vous d'ajouter un itinéraire pour home/{id} comme suit?

 routes.MapRoute(
      name: "HomeID", 
      url: "home/{id}", 
      defaults: new { controller = "Home", action = "Index", id = 0 }); 

Ensuite, lorsque vous créez l'URL, il vous donnera/home/32 (si elles sont générées avec l'ID de 32)

0

Que diriez-vous de créer votre propre aide qui va générer l'URL que vous voulez . Il peut même être un simple appel à l'implémentation mvc de URL.Action, puis en remplaçant le nom de l'action par ce que vous voulez.