MVC Route с косой чертой в значении параметра - PullRequest
1 голос
/ 05 марта 2019

В веб-проекте C # MVC4 у ​​меня есть следующий пользовательский маршрут:

routes.MapRoute( 
   name: "ProductDetails", 
   url: "Details/{productName}/{revision}",             
   defaults: new { controller = "Product", action = "Details", productName = "", revision = 1 });

Что указывает на метод контроллера:

public ActionResult Details(String productName, Int32? revision)
{ ... }

И я генерирую такие ссылки:

<a href="@Url.Action("Details" ,"Product", new { productName = @prod.ProductName, revision = @prod.Revision })" ...

Когда название моего продукта содержит косые черты, в источнике HTML я вижу, что оно закодировано в URL (иногда, иногда нет). Когда я urlencoded название продукта, MVC говорит, что это двойное кодирование, и поэтому он терпит неудачу. Когда я не - иногда это не закодировано, как это время:

<a href="/Products/Details/green/banana/apple" title="View detail">View</a>

Я не могу использовать идентификатор продукта здесь, должен использовать имя. Имя может содержать косую черту и другие специальные символы. Это требования.

Как мне справиться с этой ситуацией на стороне кода? Как настроить сам маршрут или использовать какой-нибудь пользовательский шаг кодирования-декодирования?

Спасибо за добрый совет!

...