Сбой маршрута ASP.NET MVC. Это ошибка или угловой случай?

У меня есть приложение ASP.NET MVC 3, в котором пользователи могут публиковать предложения типа «бла-бла . Было бы лучше, если бы yada йада йада ". Для страницы с описанием предложений я определил хороший SEO-дружественный маршрут следующим образом:

routes.MapRoute(null, "suggestion/{id}/{it}/would-be-better-if-{if}", 
    new { controller = "suggestion", action = "details" });

Как видите, я хочу, чтобы часть «было бы лучше, если бы» была исправлена.

Этот маршрут работает отлично. для любого старого предложения и генерирует ссылки типа предложение / 5 / this-site / would-be-better-if-it-had-a-iphone-application , и при нажатии на ссылку фактически запрашивается соответствующая информация страница.

Мой друг, который по иронии судьбы является тестировщиком, сумел невольно опубликовать предложение, которое фактически нарушает маршрут: « Этот сайт был бы лучше, если бы 'было бы лучше, если бы' был всегда выравнивается по середине ".
Ссылка, созданная для этого предложения: / offer / 84 / this-site / would-be-better-if-would-be-better-if-always-alligned-in-the-middle .

Я пробовал Отладчик маршрутизации Фила Хаака и подтвердили, что маршрут действительно будет работать до подсказки / 84 / this-site / would-be-better-if-would-be-better-if- , поэтому второй вариант «было бы лучше, если» действительно принимается; добавление чего-либо после этого фактически приведет к тому, что URL-адрес не будет соответствовать ни одному маршруту (спасибо Омару, см. комментарии- за помощью) .


Имейте в виду, что я действительно не хочу измените определение маршрута , так как я думаю, что это настолько хорошо, насколько я могу справиться с этим случаем, с точки зрения SEO.

Итак, почему текст, равный фиксированной части маршрута, препятствует тому, чтобы ссылка соответствовала маршруту? почему нарушает маршрут?

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

13
задан 14 revs, 2 users 100% 4 April 2011 в 16:04
поделиться