2010-08-29 25 views
7

Nel mio file ASax globale, voglio tracciare un percorso come questo:Come indirizzare una stringa di query con "?" e come gestirlo

http://domain.com/add/link?url=http%3A%2F%2Fgoogle.com 

e poi prendere utilizzando il mio LinkController con l'azione denominata Add.

Faccio questo?

global.asax->

routes.MapRoute(
    "AddLink", 
    "Add/Link?{url}", 
    new { controller = "Link", action = "Add" } 
); 

LinkController->

public string Add(string url) 
{ 
    return url; // just want to output it to the webpage for testing 
} 

?? Non sembra funzionare. Che cosa sto facendo di sbagliato? Grazie!

risposta

15

ASP.Net MVC associa automaticamente i parametri dalla stringa di query; non è necessario inserirlo nel percorso.

Il percorso può essere semplicemente

routes.MapRoute(
    "AddLink", 
    "Add/Link", 
    new { controller = "Link", action = "Add" } 
); 
+0

Grazie mille! Questo è stato. –

0

Mostra ValueProviderFactories codice sorgente MVC.

namespace System.Web.Mvc { 
    using System; 

    public static class ValueProviderFactories { 

     private static readonly ValueProviderFactoryCollection _factories = new ValueProviderFactoryCollection() { 
      new FormValueProviderFactory(), 
      new RouteDataValueProviderFactory(), 
      new QueryStringValueProviderFactory(), 
      new HttpFileCollectionValueProviderFactory() 
     }; 

     public static ValueProviderFactoryCollection Factories { 
      get { 
       return _factories; 
      } 
     } 

    } 
} 
+1

um, fai cosa ora? ;) –

+0

Parametri di azione che vincolano IModelBinder. Il valore di estrazione DefaultModelBinder di HttpRequest utilizza ValueProviderFactories. Quindi, il parametro di azione si associa automaticamente a Form/Route/QueryString/UplodFile. – takepara

Problemi correlati