2009-10-07 4 views
2

Я не могу понять, почему ActionLink не генерирует правильный URL в этом одном экземпляре.Почему мой ActionLink не работает правильно?

У меня есть контроллер под названием Activity и вид под названием Show. Оттуда я пытаюсь создать ссылку на контроллер ServiceCall, Показать представление. Изнутри любой взгляд на ServiceCall это работает отлично:

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

С точки зрения деятельности, это не работает:

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

Он генерирует ссылку, как http://localhost/Activity/Show/12?Length=11

После некоторых исследований я решил попробовать следующее:

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

Это дает мне URL-адрес http://localhost/ServiceCall/Show, но не дает номер вызова. Есть идеи?

Это в моих маршрутах:

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

ответ

0

Попробуйте это:

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

Я думаю, вы не вызывая правильное переопределение. Вам нужно:

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

Обратите внимание на дополнительные null. У меня недавно была аналогичная проблема.

Редактировать: Также, я уверен, что вам не нужен Html.Encode. Он уже закодирован.

Смежные вопросы