Почему не работает по умолчанию, используя HTML.ActionLink в этом случае?

StackOverflow https://stackoverflow.com/questions/4617131

Вопрос

У меня довольно осознанная проблема с маршрутизацией.

Возвращаясь к маршрутизации после того, как не о чем беспокоиться о конфигурации для него в течение года, я использую маршрут по умолчанию и игнорировать маршрут для ресурсов:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
        "Default",
        // Route name
        "{controller}/{action}/{id}",

        // URL with parameters
        new
        {
            controller = "Home",
            action = "Index",
            id = UrlParameter.Optional
        });

у меня есть RulesController с действием для Index а также Lorem и а Index.aspx, Lorem.aspx В представлениях> справочника справочника.

У меня есть ActionLink, нацеленный на правила / индекс на странице Maseeter:

<li><div><%: Html.ActionLink("linkText", "Index", "Rules")%></div></li>

Ссылка оказывается как http://localhost:12345/Rules/ И получаю 404.

Когда я печатаю Index в URL-адрес приложение направляет его к действию.

Когда я изменяю действие маршрута по умолчанию из "Index" к "Lorem", ссылка действия оказывается как http://localhost:12345/Rules/Index Добавление Index Поскольку он больше не находится на маршруте по умолчанию и маршруты приложений к действию индекса правильно.

я использовал Отладчик маршрутизации Фила Хака, но ввод URL http://localhost:12345/Rules/ вызывает 404, используя это тоже.

Я думаю, что я охватил все ошибки новинок, соответствующие настолько вопросы и базовые RTFMS.

Я предполагаю, что «правила» не какое-либо зарезервированное слово в маршрутизации. Кроме обновления маршрутов и отстраивая их, что я могу посмотреть?

Это было полезно?

Решение

Убедитесь, что в одном каталоге нет папки, называемого «правилами». В своей конфигурации по умолчанию маршруты ASP.NET MVC уважают физические пути до определений маршрута. Если есть определенный маршрут, который соответствует пути к физической папке на сайте, двигатель маршрутизации будет полностью обойтись.

Вы можете отключить маршрутизацию на физические пути, изменив RouteTable.Routes.RouteExistingFiles имущество false, Но если вы это сделаете, и ваше приложение имеет пути к физическим ресурсам (например, изображения, скрипты, стилы, и т. Д.) Вам нужно будет приспособиться к тем путям с соответствующими определениями IGNOREROUTE (). Например: RouteTable.Routes.IgnoreRoute("content/{*pathInfo}");.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top