Перезапись URL в MVC 3 - PullRequest
       4

Перезапись URL в MVC 3

0 голосов
/ 07 ноября 2011

Я хочу получить доступ к статье с удобным для пользователя URL http://localhost/Content/Article/{id}/{title},, которая внутренне обрабатывает этот URL-адрес, например http://localhost/Content/Article/{i}.. Я создал правило маршрутизации URL для этих URL-адресов, которое

 routes.MapRoute(
                "Article",
                "{controller}/{action}/{id}/{title}",
                new { controller = "content", action = "article", id = UrlParameter.Optional, title = UrlParameter.Optional }
                );

Как бы то ни было, он обрабатывает запрос, но ответ html не работает. Это меняет все изображения, якорь, CSS, Javascript URL. Замена корневого URL-адреса на / Content / Article и мой html отображается неправильно. Все css форматирование прошло. Я попытался переписать модуль IIS7.0 и маршрутизацию Asp.nET, и оба дали мне эту проблему.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Убедитесь, что все ссылки на внешние файлы относятся к корню вашего веб-сайта.

Это не проблема маршрутизации ASP.NET, а проблема с ссылками на внешние файлы..

0 голосов
/ 07 ноября 2011

Если вы явно ввели правильный URL-адрес в браузере, вы получите правильную страницу?

Я часто сталкивался с этой проблемой, особенно когда у меня есть Области. Я обнаружил, что использование T4MVC (NuGet Package) для всех @ Html.ActionLinks и т. Д. Решает проблему. Например, используя T4MVC вместо:

<li>@Html.ActionLink("Home Page", "Index", "Home")</li>

... вы можете написать:

<li>@Html.ActionLink("Home Page", MVC.Home.Index())</li>

Обратите внимание на MVC.Home.Index (). Вот как T4MVC позволяет вам покончить с волшебными строками (actionName и controllerName). Другими словами, T4MVC позволяет использовать следующую перегрузку HtmlHelper.ActionLink:

HtmlHelper.ActionLink(string linkText, ActionResult result)

Вместо:

HtmlHelper.ActionLink(string linkText, string actionName, string controllerName)

По причинам, которые меня избегают прямо сейчас (я забыл, почему!), Это решает проблему, которая, я думаю, у вас возникла.

Просто проверьте и посмотрите, работает ли ввод нужного URL в адресную строку. Если так, то это плохие ссылки, а не маршрутизация.

Если у вас все еще есть проблема, то это не ответ ...

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