2016-07-31 21 views
1

我使用ASP.NET MVC5使用/在查詢字符串值,我有這樣一個URL:如何在asp.net mvc的

本地主機:/產品/ 12/nexus5x /石英

product :controller; 12 :id; nexus5x/quartz:name 

但它返回一個404錯誤,因爲url中的最後一個參數包含/,我沒有路由來支持這個。 我該怎麼做? 有時最後一個參數(productName)包含/

第一個解決方案是將替換爲-,但對於某些產品我無法替代。

回答

1

你需要encode的URL。 URL編碼涉及轉換字符,以便它們可以包含在查詢字符串中。字符/編碼爲%2F

所以網址將成爲/product/12/nexus5x%2Fquartz

爲了編碼在JavaScript中的價值,你可以調用encodeURI方法。

var productName = "nexus5x/quartz"; 
var encodedProductName = encodeURI(productName); 

要在C#中編碼值,您可以調用Uri.EscapeUriString方法。

+0

我無法在'@ Html.action'中調用'encodeURI' –

+0

@osmanRahimi在C#中,您可以使用'Uri.EscapeUriString' https://msdn.microsoft.com/zh-cn/library/system.uri .escapeuristring(v = vs.110)的.aspx –

1

我相信你應該可以使用捕捉所有路線。只是前綴星號'*'到最後一個標記。

下面是一個使用路由屬性的例子:

[Route("product/{id}/{*name}")] 

參數「名」這裏應該捕捉一切都會過去「身份證」,即使包括一個斜線。