В шаблоне маршрута ASP.NET MVC 2 возникают проблемы с обработкой пробелов - PullRequest
4 голосов
/ 13 октября 2010

У меня есть маршрутный маршрут, отображенный как показано ниже:

        routes.MapRoute(
            null,
            "{controller}/{action}/{*category}",
            new { controller = "Mall", action = "Index", category = UrlParameter.Optional }
        );

Это работало нормально, пока в категории не было пробелов до или после косой черты "/".

Длякатегория ИСКУССТВО / МУЗЫКА , она найдет страницу в порядке.

Для категории ИСКУССТВО / МУЗЫКА , это даст мне 404 не найдено.1013 * Любая помощь будет высоко ценится!

1 Ответ

2 голосов
/ 31 января 2011

Я только что ответил на тот же вопрос здесь . Для полноты:

Если в конце какой-либо части URL-адреса перед следующей косой чертой находится пустое пространство, в методе System.Web.Util.FileUtil.CheckSuspiciousPhysicalPath(), который обрабатывается MVC, выдается HttpException, и вы получите ответ HTTP 404.

Вы можете проверить это самостоятельно, установив флажок для Throw in:

  1. Visual Studio
  2. Debug
  3. Exceptions
  4. Common Language Runtime Exceptions

Как правило, в ваших URL не должно быть пустых мест. Я лично форматирую свои URL, чтобы все пробелы становились тире (-).

...