В веб-проекте 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>
Я не могу использовать идентификатор продукта здесь, должен использовать имя. Имя может содержать косую черту и другие специальные символы. Это требования.
Как мне справиться с этой ситуацией на стороне кода? Как настроить сам маршрут или использовать какой-нибудь пользовательский шаг кодирования-декодирования?
Спасибо за добрый совет!