ich eine Route haben, um richtig zu entkommen, der wie folgt aussieht:Erste ASP.NET MVC der # (Hash/pound) Zeichen in Routen
routes.MapRoute(
"BlogTags",
"Blog/Tags/{tag}",
new { controller = "Blog", action = "BrowseTag", viewRss = false }
);
Und ich erstellen eine URL, die Route wie folgt aus:
<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag),
new { action = "BrowseTag", tag = sortedTags[i].Tag })%>
wenn jedoch ein Tag mit einem # Zeichen (wie "C#") verwendet wird, wird das Routing-Engine entkommt es nicht, so dass ich eine URL, die wie folgt aussieht:
<a href="/Blog/Tags/C#">C#</a>
Was ich brauche, ist die # entkommen, so dass es wie folgt aussieht:
<a href="/Blog/Tags/C%23">C#</a>
Ich versuchte, ein Url.Encode auf dem Tag zu tun, bevor es in die Strecke ging, wie folgt aus:
<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag),
new { action = "BrowseTag", tag = Url.Encode(sortedTags[i].Tag) })%>
aber das macht das Routing-Engine der doppelte # entkommen (die mit einem schlechten Anforderungsfehler einen ASP.NET-Absturz verursacht)):
<a href="/Blog/Tags/C%2523">C#</a>
Wie kann ich das Routing-Engine bekomme für mich das Zeichen # zu entkommen correc tally?
Vielen Dank für Ihre Hilfe im Voraus.
Als Randbemerkung ist die Routing-Engine in .NET 4 behoben. Es wird alles, was an es übergeben wird entkommen. Wenn Sie eine MVC 2-Anwendung unter .NET 4 ausführen, sollten Sie dieses Verhalten automatisch erkennen können. – Levi