Маршруты не найдены или построены неправильно - PullRequest
4 голосов
/ 15 ноября 2010

Ниже приведено определение моих маршрутов из global.asax.cs:

routes.Add(
  new NamedTypedRoute(
    "feedback-en", RouteType.Regular, "{culture}/Feedback",
    new RouteValueDictionary(
      new
      {
        culture = "en",
        controller = "Feedback",
        action = "Index"
      }
    ),
    null,
    new MultiLingualMvcRouteHandler()
  )
);

routes.Add(
  new NamedTypedRoute(
    "feedback-sl", RouteType.Regular, "{culture}/Kontakt",
    new RouteValueDictionary(
      new
      {
        culture = "sl",
        controller = "Feedback",
        action = "Index"
      }
    ),
    null,
    new MultiLingualMvcRouteHandler()
  )
);

Если я сделаю это в представлении

<%: Html.ActionLink("sl", "feedback-sl")%> | <%: Html.ActionLink("en", "feedback-en")%>

составной URL указывает на корневой сайт (информация о контроллере / действии не включена в составную ссылку).

Если я сделаю это в представлении

<%: Html.RouteLink("sl", "feedback-sl")%> | <%: Html.RouteLink("en", "feedback-en")%>

исключение:

"A route named 'feedback-sl' could not be found in the route collection.
Parameter name: name"

Мои два вопроса:

  1. Почему есть два очень похожих помощника, RouteLink и ActionLink? В чем разница между ними?
  2. Полагаю, что-то не так с моей реализацией NamedTypedRoute. Мне нужно, чтобы в нем были названы маршруты и напечатаны маршруты - маршрут может быть административным и обычным. Я использую эту информацию для динамического построения меню администрирования на основе определения маршрутов. Для страниц администрирования у меня есть имена, указывающие на строки ресурсов, а затем я использую их в заголовках страниц администрирования. Таким образом, у меня есть локализуемые названия маршрутов. Я слишком усложняю это?

1 Ответ

1 голос
/ 16 ноября 2010

Расширение Html.ActionLink отображает элемент привязки, который ссылается на действие.С другой стороны, расширение Html.RouteLink отображает элемент привязки, который может быть преобразован в метод действия, файл, папку или какой-либо другой ресурс.RouteLink на самом деле не принимает строки ActionName и ControllerName, такие как ActionLink.Из более подробного взгляда немного на имена параметров для параметров.Описания здесь не очень хорошо написаны в MSDN / IntelliSense.

К сожалению, у меня нет ответа на второй вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...