| 

.NET C# Java Javascript Exception

2
Der / dient dem Routing-Modul von ASP.NET MVC dazu, verschiedene URL-Segmente voneinander zu trennen, wie bei der Standard-Route

{controller}/{action}/{id}

Wie kann ich einen / innerhalb eines URL-Segments haben? Geht das überhaupt? Wenn ja, wie?

Beispiel:

Die übergebene ID soll
08/15
lauten.
News:
14.01.2011
Golo Roden 2,7k 3 9
3 Antworten
3
Du musst den slash escapen:

In ASCII: %2F, und in UTF-8: %00%2F

//ASCII
{controller}/{action}/08%2F15
//UTF-8
{controller}/{action}/08%00%2F15


Helfen kann dir dabei die Methode: System.Web.HttpServerUtility.UrlEncode(String)

ggf. musst du in der Web.Config noch die Option "DontUnescapePathDotsAndSlashes" setzten.

<uri> 
<schemeSettings>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
</schemeSettings>
</uri>
14.01.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
3
Wenn mit dem Escapen nicht klappt (würde ich erstmal so denken), dann zwei Segmente und per ModelBinder zusammensiehen.
Besser jedoch auch 08/15 ein 08-15 machen und es Serverseitig wieder in ein 08/15 umwandeln.

/ sind nun mal segment-trenner.
14.01.2011
Albert Weinert 39 1
2
Ich würde sagen, in etwa so:

08%2F15


Habe von ASP.NET null Ahnung, aber wenn du in URLs reservierte Zeichen verwenden willst, musst du sie als Hexwert kodieren (und vor Verwendung natürlich wieder dekodieren). Vernünftige Frameworks sollten das für dich übernehmen :-)
14.01.2011
fenchurch 611 6
Ups, das war ein (fast) zeigleicher Beitrag, der dann wohl etwas zu spät kam ...
fenchurch 14.01.2011
Übernehmen kann es das Framework für dich nur dann wenn du den Weg übers Framework gehst ;) Wenn du ins HTML direkt den Links schreibst kann es nicht wissen was du meinst ("/08/15" ist genauso gültig wie "08%F15").
Floyd 14.01.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH