Как я могу обмануть MVC для рендеринга ссылок на основе другого виртуального пути? - PullRequest
1 голос
/ 09 декабря 2008

Я запускаю кучу приложений на discountasp.net с аддоном субдомена. Поскольку с общим хостингом у меня не может быть нескольких сайтов IIS, я также написал модуль HTTP, который позволяет сайтам в подпапках работать так, как если бы они работали в корневом каталоге. Так, например, вместо размещения моего блога на dandoes.net/blog, я могу разместить его на blog.dandoes.net (на самом деле это действительно dandoes.net). Это отлично работало до сих пор, когда я пытаюсь использовать его вместе с MVC.

HtmlHelper генерирует свои URL-адреса на основе виртуального пути приложения, а не данных пути в URL-адресе. Так что, если я нахожусь на blog.dandoes.net и хочу добавить ссылку на blog.dandoes.net/Samples, у меня может быть такой код:

<%=Html.ActionLink("Samples", "Index", "Samples")%>

В обычных обстоятельствах это сгенерирует URL-адрес blog.dandoes.net/Samples, но вместо этого он генерирует blog.dandoes.net/Blog/Samples, поскольку виртуальный каталог /Blog.

.

Я мог бы, вероятно, занять 5 минут и написать что-нибудь по-настоящему хакерское, чтобы делать то, что я хочу, но я думаю, что было бы действительно интересно, если бы я мог заставить среду MVC делать то, что я хочу.

Итак, есть ли способ заставить его отображать правильные URL?

1 Ответ

1 голос
/ 23 июля 2009

Помощник HTML - это просто класс, который возвращает строку в ваш код. Все, что вам нужно сделать, это написать свой собственный вспомогательный класс для вывода строки в нужном вам формате.

...