У меня есть следующая ссылка, определенная на странице, которая будет построена на основе маршрута, определенного в web.config
<%= Html.RouteLink(product.DisplayName, "ShopProductNames", new {Id = product.Id, ProductName = product.DisplayName.Replace(' ', '-') }) %>
Мне нужно, чтобы URL кодировал DisplayName в URL этой ссылки, однако, когда я добавляю кодировку следующим образом:
<%= Html.RouteLink(product.DisplayName, "ShopProductNames", new {Id = product.Id, ProductName = Url.Encode(product.DisplayName.Replace(' ', '-')) }) %>
Он дважды кодирует мое DisplayName (в URL), и я получаю сообщение об ошибке в IIS.
Мое свойство DisplayName не кодируется перед передачей на страницу. Кроме того, RouteLink, по-видимому, не является кодировкой Url для отображаемой ссылки по умолчанию, поскольку он не выбирает пробелы или амперсанды при отображении страницы.
Кто-нибудь знает, что я делаю не так?
ОБНОВЛЕНИЕ: Я на самом деле имею в виду URL, сгенерированный RouteLink, а не сам текст ссылки
ОБНОВЛЕНИЕ 2: вот маршрут, которым я пользуюсь
routes.MapRoute(
"ShopProductNames",
"Shop/{productName}/p/{id}/{*nameInfo}",
new
{
controller = "Product",
action = "Detail"
}
);