Wie gehen die Sonderzeichen so ASP.NET MVC verarbeiten kann, richtig query-string Daten?
Bin ich über eine route wie diese hier:
routes.MapRoute("Invoice-New-NewCustomer",
"Invoice/New/Customer/New/{*name}",
new { controller = "Customer", action = "NewInvoice" },
new { name = @"[^\.]*" });
Es ist eine Aktion, die Griffe dieser route:
public ActionResult NewInvoice(string name)
{
AddClientSideValidation();
CustomerViewData viewData = GetNewViewData();
viewData.InvoiceId = "0";
viewData.Customer.Name = name;
return View("New", viewData);
}
Wenn ich rufe return RedirectToAction("NewInvoice", "Customer", new {name});
und der name ist gleich "Der C# - Typ", der "name" - parameter abgeschnitten wird "C".
Also meine Frage ist : Was ist der beste Weg, um behandeln Sie diese Art von speziellen Charakter mit ASP.NET MVC?
Dank!
InformationsquelleAutor der Frage labilbe | 2008-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, habe ich bestätigt, dass dies jetzt ein bekanntes Problem in ASP.NET Routing, leider. Das problem ist, dass sich tief in die Eingeweide von routing, verwenden wir Uri.EscapeString wenn das entkommen von routing-Parametern für die Uri. Jedoch, diese Methode nicht die Flucht der " # " - Zeichen.
Beachten Sie, dass das Zeichen " # " (aka Raute) ist technisch die falschen Zeichen. C♯ die Sprache ist eigentlich ein "C" gefolgt von einem deutlichen Zeichen wie in der Musik: http://en.wikipedia.org/wiki/Sharp_(Musik)
Wenn Sie die Vorzeichen, könnten dieses problem lösen. 😛
Andere Lösung, da die meisten Leute verwenden wollen, die Raute ist das schreiben einer benutzerdefinierten route für diese Strecke und nachdem Sie den virtuellen Pfad, codieren Sie die # - Zeichen mit HttpUtility.UrlEncode codiert # %23.
Als follow-up, ich wollte Sie auf diesem blog-post, die Gespräche über den übergang in andere "ungültige" Zeichen. http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx
InformationsquelleAutor der Antwort Haacked
URL-Codierung! Den link ändern, so dass es kodiert Sonderzeichen.
C# "c%23".
InformationsquelleAutor der Antwort EndangeredMassa
Funktioniert auf meinem Rechner. Hier ist, was ich Tat, um erstellen Sie die einfachste mögliche Beispiel.
Startete ich dann meine app und navigiert zu /home/index. Die Umleitung tritt auf, und ich sah, "Das C# - Kerl" in meinem browser.
InformationsquelleAutor der Antwort Haacked