在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编码的(有时,有时不是)。当我编码产品名称时,MVC表示它是双重编码的,因此失败了。当我不这样做时-有时它的编码方式不是这样:
<a href="/Products/Details/green/banana/apple" title="View detail">View</a>
我在这里不能使用产品ID,必须使用名称。该名称可能包含斜杠和其他特殊字符。它们是要求。
我应该如何在代码方面处理这种情况?如何配置路由本身,或使用一些自定义的编码-解码步骤?
感谢您的友善建议!