voglio avere il mio percorso generico determinare se una stringa di query è stata approvata nella URL come questoazioni e parametri QueryString in API Web
http://localhost/query/DailyLogs/1?dateOfLog='1/13/2013'
Ecco la mia definizione rotta corrente:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "query/{controller}/{id}",
defaults: new { id = RouteParameter.Optional}
);
ho letto alcune risposte che dicono di aggiungere il valore dateOfLog come un'azione opzionale sul defintion percorso:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "query/{controller}/{id}/{dateOfLog}",
defaults: new { id = RouteParameter.Optional,
dateOfLog = RouteParameter.Optional }
);
Questo non sembra funzionare, forse sto facendo qualcosa di sbagliato, non sono sicuro.
Questo è il modo Attualmente sto gestire il problema, ma vorrei usare il potere ModelBinding del motore di routing:
var queryValue = Request.RequestUri.ParseQueryString();
string dateOfLog = queryValue["dateOfLog"];
prego di dirmi come creare una definizione di percorso che utilizzerà ModelBinding correttamente e mappa il mio URL personalizzato ai parametri del controller.
L'ho provato, senza successo. Ecco la firma del metodo: public DailyLogResponse Get (int id, DateTime dateOfLog), l'utilizzo del percorso sopra questo non raggiunge il metodo. –
Ok, prova a utilizzare un tipo di stringa anziché DateTime nel parametro method. – Moo
Sì, sei corretto è in realtà un errore di analisi DateTime, quando ho cambiato il tipo di parametro in stringa il metodo si attiva e i valori sono presenti. Grazie. –