2010-12-30 12 views
1

Wir haben unsere Lösung auf MVC 2 aktualisiert. Externe Links verwenden weiterhin /mypath/Default.aspx mit einer Abfragezeichenfolge von n = 10. Gibt es eine Möglichkeit, diese Route mit einem Controller abzufangen und eine Default.aspx-Datei mit der richtigen Abfragezeichenfolge aufzurufen?MVC Routing: Wie /mypath/Default.aspx zu /Default.aspx route und QueryString behalten?

Wir haben versucht, einfach mit IIS6 sowie eine Meta-Aktualisierung umzuleiten, aber beide streichen die Abfragezeichenfolge ab.

Nick Cravers answer sieht vielversprechend als Antwort auf diese Frage.

Antwort

1

Ich bin nicht sicher, was Sie meinen "und rufen Sie eine Default.aspx-Datei mit der richtigen Abfragezeichenfolge auf?" Aber wenn Sie Ihre Standardroute anrufen möchten, können Sie das problemlos tun.

Sie sollten nur eine Route auf "Mypath/Default.aspx" angeben können. Der Querystring wird automatisch an Ihre Methode gebunden.

Zum Beispiel:

routes.MapRoute(
    "LegacyUrl", // Route name 
    "mypath/Default.aspx", // URL with parameters 
    new { controller = "Home", action = "Index"} 
); 

dann Ihre Methode:

[HttpGet] 
public ActionResult Index(int n) 
{ 
    // do something with n, maybe pass it to the View 
    return View(); 
} 
+0

Will 'routes.MapPageRoute ("/ alt/path/to/myWebForm.aspx", "{* value}", "~/myWebForm.aspx"); 'leitet die QueryString-Parameter oder die Posted-Daten an die neue Seite weiter, zB /old/path/to/myWebForm.aspx?somedata=yep&otherdata=yep wird /myWebForm.aspx/?somedata=yep&otherdata = ja? Wenn dies nur in einigen Fällen zutrifft, wie können Sie die Daten in allen Fällen weiterleiten? –