URLEncode не работает в браузере MVC

голоса
0

Привет мой кодированный URL путь мне нужно пройти в браузере должен быть ниже

HTTPS: // локальный: 44384 / неполный поиск / все / GMC / 1973 / р25% 2fp2500 + ван / основание / 41L-L6

но браузер преобразовать этот URL в поле ниже пути и из-за того, что я получаю сообщение об ошибке 404

HTTPS: // локальный: 44384 / неполный поиск / все / GMC / 1973 / p25 / P2500 + ван / основание / 41L-L6

MY путь маршрутизации объявлена ​​как ниже

routes.MapRoute(
          name: ShopByCateShopNow,
          url: part-lookup/{category}/{make}/{year}/{models}/{submodel}/{engine},
          defaults: new { controller = Home, action = ShopNow }
        );

Здесь к югу от модели фактического значения как «P25 / P2500 бусов» и после кодирования этого значения, которое он получает преобразования в «p25% 2fp2500 + фургон» значения из-за которой он не перенаправлять правильно и показывает ошибку 404.

Как я могу решить эту проблему?

Задан 03/07/2018 в 13:56
источник пользователем
На других языках...                            


2 ответов

голоса
0

В контроллере, вы можете использовать , Request.Path.ToString()чтобы получить чистейший путь. Это будет включать в себя p25%2fp2500+van, так что вы можете использовать

var url = Request.Path.ToString();
var model = url.Split('/')[4];

Существует риск того, что индекс не будет 4, если доступ к этому из других мест, а иногда и размещения сайта в подпапках.

Ответил 03/07/2018 в 15:07
источник пользователем

голоса
2

%2Fэто символ HTML путь. Если вы хотите, чтобы относиться к нему как данные, которые вы должны будете кодировать его самостоятельно. Или создать путь, который имеет другой уровень между моделью и подмоделью и повторно объединить их в контроллере.

routes.MapRoute(
          name: "ShopByCateShopNow",
          url: "part-lookup/{category}/{make}/{year}/{modelprefix}/{modelsuffix}/{submodel}/{engine}",
          defaults: new { controller = "Home", action = "ShopNowPrefixSuffix" }
        );

После объединения в контроллере можно вызвать один и тот же метод , что карты на ShopNow действие с models = $"{modelprefix}/{modelsuffix}"или аналогичными.

Ответил 03/07/2018 в 15:08
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more