2016-07-31 11 views
1

のasp.net MVCでクエリ文字列値に/使用することができ、私はこのようなURLがあります。は、どのように私はASP.NET MVC5を使用

はlocalhost:/製品/ 12/nexus5x /石英

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

URL内の最後のパラメータに/が含まれており、それをサポートするルーティングがないため、404エラーが返されます。 どうすればいいですか? 最後のパラメータ(productName)には、/が含まれることがあります。

最初の解決方法は/-に置き換えていますが、一部の製品ではそれを置き換えることができませんでした。

答えて

1

URLはencodeである必要があります。 URLエンコードでは、文字列をクエリー文字列に含めることができるように変換します。文字/%2Fにエンコードされています。

ので、URLは、あなたがencodeURIメソッドを呼び出すことができますJavaScriptで値をエンコードするには/product/12/nexus5x%2Fquartz

になります。

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

この値をC#でエンコードするには、Uri.EscapeUriStringメソッドを呼び出すことができます。

+0

'@Html.action'で' encodeURI'を呼び出せません。 –

+0

@osmanRahimi C#では、 'Uri.EscapeUriString'を使用できます。https://msdn.microsoft.com/en-us/library/system.uri .escapeuristring(v = vs.110).aspx –

1

キャッチオールルートを使用できるはずです。 アスタリスクを接頭辞の最後のトークンに '*'を付けてください。ここで

は、ルート属性を使用した例です。

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

パラメータ「名前」ここそれはスラッシュが含まれていても、「ID」過ぎて、すべてをキャッチする必要があります。

関連する問題