参数值中带有斜线的MVC路由

时间:2019-03-05 14:07:15

标签: asp.net-mvc url routes urlencode

在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,必须使用名称。该名称可能包含斜杠和其他特殊字符。它们是要求。

我应该如何在代码方面处理这种情况?如何配置路由本身,或使用一些自定义的编码-解码步骤?

感谢您的友善建议!

0 个答案:

没有答案