2009-10-07 13 views
2

Je n'arrive pas à comprendre pourquoi ActionLink ne génère pas correctement l'URL dans cette instance.Pourquoi mon ActionLink ne génère-t-il pas correctement?

J'ai un contrôleur appelé Activité et une vue appelée Afficher. De là, j'essaie de créer un lien vers le contrôleur ServiceCall, Afficher la vue. À l'intérieur une vue sur le ServiceCall cela fonctionne bien:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { callNumber = "100" })%> 

Du point de vue de l'activité, cela ne fonctionne pas:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" })%> 

Il génère un lien comme http://localhost/Activity/Show/12?Length=11

Après quelques I recherche décidé d'essayer ceci:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { controller = "ServiceCall" }, new { callNumber = "100" })%> 

Cela me donne une URL de http://localhost/ServiceCall/Show mais ne donne pas le numéro d'appel. Des idées?

C'est dans mes itinéraires:

routes.MapRoute(
      "ShowCall", 
      "ServiceCall/Show/{callNumber}", 
      new {controller = "ServiceCall", action = "Show", callNumber = ""} 
      ); 

Répondre

0

Essayez ceci:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" }, null)%> 
6

Je pense que vous n'êtes pas appeler le remplacement correct. Vous avez besoin:

<%= Html.ActionLink(
    sc.CallNumber, 
    "Show", 
    "ServiceCall", 
    new { callNumber = "100" }, 
    null) %> 

Notez que le null supplémentaire. J'ai eu récemment un problème similaire.

Modifier: Aussi, je suis sûr que vous n'avez pas besoin de Html.Encode. C'est déjà en cours d'encodage.

Questions connexes