我在将基于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(' ', '-')) }) %>
它对我的显示名进行双重编码(在url中),我在iis中得到一个错误。
在将displayname属性传递到页之前,未对其进行编码。此外,默认情况下,RouteLink似乎不是呈现链接的URL编码,因为它在呈现页面时不会拾取空格或与号。
有人知道我做错了什么吗?
更新:我实际上指的是routelink生成的url,而不是链接文本本身
更新2:这是我使用的路线
routes.MapRoute(
"ShopProductNames",
"Shop/{productName}/p/{id}/{*nameInfo}",
new
{
controller = "Product",
action = "Detail"
}
);