2009-04-09 4 views
0

Ich versuche Pass in einer URL als Paramter zu meinem Controller wie folgt aus:Wie kann ich eine URL als Variable in einem Querystring an meinen Controller übergeben?

//Passed in via url like this: 
//http://www.mydomain.com/Puzzle/ContinuePuzzle/{insert url here} 
public ActionResult ContinuePuzzle(string url) 
{ 
    return View("PuzzleWrapper", 
       (object)_PuzzleService.ContinuePuzzle(url); 
} 

Jedes Mal, wenn ich das versuche ich einen http 400 Bad Request Fehler. Ich habe versucht UrlEncoding es, aber es mag es immer noch nicht. Irgendwelche Vorschläge?

+0

Was ist, wenn Sie es in Klammern setzen oder ist das einfach zu umständlich? – Brettski

Antwort

3

Ich habe einen Verdacht mit zwei Schema Deklarationen in der URL verursacht den Standard-Route-Handler, um die 400 Antwort zu werfen.

Als eine Arbeit, würde ich nur die URL ohne das Schema (d. H. Http: //) senden. Getestet habe ich dieses Szenario ohne Probleme:

http://www.mydomain.com/Puzzle/ContinuePuzzle/www.domain.com/nextpuzzle

Mit dieser Route:

routes.MapRoute("Puzzle", "Puzzle/ContinuePuzzle/{*url}", new {controller = "Puzzle", action = "ContinuePuzzle", url = ""}); 

Wenn Sie das Schema haben, dann einen Abfragezeichenfolgeflag Parameter verwenden, wie Charlino vorgeschlagen.

0

Was ist, wenn Sie es in Klammern setzen?

Um http: // wieder auf der URL zu beginnen, ist eine ungültige Adresse.

http://www.mydomain.com/Puzzle/ContinuePuzzle/(http://mypuzzlingdomain.com/?a4) 

Oder vielleicht Klammern können auch funktionieren.

Verwandte Themen