Я пытаюсь получить красивый URL-адрес из Html.ActionLink, но вместо этого получаю версию с запросом. У меня есть определенный маршрут, который отлично работает, когда я ввожу значения, которые должны быть в навигационную панель в моем браузере, и в конечном итоге получаю представления и нажимаю на действия контроллера, которые, я думаю, я бы сделал.Html.ActionLink не работает как ожидается
Мое определение маршрута:
routes.MapPageRoute(
"WebFormDefault",
"",
"~/Login.aspx"
);
routes.MapRoute(
"MvcDefault",
"{controller}/{action}/{id}",
new {controller = "Foo", action = "Index", id = UrlParameter.Optional}
);
Мой помощник вызов разметки:
<ul>
<li>@Html.ActionLink("Foo Link", "FooAction", "Foo")</li>
</ul>
Фактический результат:
<a href="/?action=FooAction&controller=Foo">Foo Link</a>
Мои ожидания:
<a href="/Foo/FooAction">Foo Link</a>
Я попытался запустить новый проект за пределами текущего, который является существующим приложением, и увидел ожидаемый результат. Я добавил MVC вручную в проект, поскольку это приложение веб-форм изначально. Это гибридизация сортов, и я не уверен, что это вызывает проблему. Я использовал nuget для сборки MVC-сборок и зависимостей и самостоятельно настраивал конфигурацию на основе вывода в VS из шаблона «Новый проект ...». Я не вижу разницы между ними в отношении конфигураций за пределами моего включения нашего корневого пространства имен, поэтому я могу использовать мои существующие типы. Однако я не знаю, есть ли что-то еще, что мне нужно сделать. Однако это сбивает с толку, потому что MVC ведет себя в гибридной среде, в противном случае точно так же, как я ожидал бы этого.
Вы пробовали отлаживать маршруты, используя что-то вроде Glimpse, чтобы убедиться, что ваши маршруты сопоставляются, как вы ожидаете? –
Я совсем забыл о проблеске. Я посмотрю, что он должен сказать. – Bigsby
Я думаю, вам нужно сначала просмотреть это ниже URL: http://stackoverflow.com/questions/22914859/mvc5-actionlink-pass-data-as-query-string –