Вопрос:
Я создаю wiki-программное обеспечение, в основном клон wikipedia/mediawiki, но в ASP.NET MVC (это MVC, поэтому не рекомендуем мне ScrewTurn).
Теперь у меня есть вопрос:
Я использую это сопоставление маршрутов, чтобы направить URL-адрес, например:
http://en.wikipedia.org/wiki/ASP.NET
routes.MapRoute(
"Wiki", // Routenname
//"{controller}/{action}/{id}", // URL mit Parametern
"wiki/{id}", // URL mit Parametern
new { controller = "Wiki", action = "dbLookup", id = UrlParameter.Optional } // Parameterstandardwerte
);
Теперь мне просто показалось, что могут быть такие названия, как "AS/400":
http://en.wikipedia.org/wiki/AS/400
Кстати, есть и этот (название "Slash" ):
http://en.wikipedia.org/wiki//
И этот:
http://en.wikipedia.org/wiki//dev/null
В целом, в Википедии есть список интересных названий: http://en.wikipedia.org/wiki/Wikipedia:Articles_with_slashes_in_title
Как правильно сделать маршруты, подобные этому маршруту?
Изменить:
Что-то вроде:
Если URL-адрес начинается с /Wiki/, и если он не начинается с /wiki/Edit/
(но не /Wiki/Edit )
затем передайте весь остальной URL-адрес в качестве идентификатора.
Изменить:
Хм, еще одна проблема:
Как я могу маршрутизировать этот:
http://en.wikipedia.org/wiki/C&A
Википедия может...
Изменить:
Согласно википедии, из-за столкновений с синтаксисом wikitext, только следующие символы никогда не могут использоваться в названиях страниц (и они не поддерживаются DISPLAYTITLE):
# < > [ ] | { }
Изменить:
Чтобы разрешить * и &, поместить
<httpRuntime requestPathInvalidCharacters="" />
в раздел < system.web > в файле web.config
(Найдено здесь: http://www.christophercrooker.com/use-any-characters-you-want-in-your-urls-with-aspnet-4-and-iis)