Chcę mieć mój generyczny trasa ustalić, czy ciąg kwerendy została przekazana w URL jak tenOperacje i parametry kwerendy w sieci Web API
http://localhost/query/DailyLogs/1?dateOfLog='1/13/2013'
Oto moja aktualna definicja trasy:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "query/{controller}/{id}",
defaults: new { id = RouteParameter.Optional}
);
Przeczytałem kilka odpowiedzi, które mówią, aby dodać wartość dateOfLog jako opcjonalną akcję na Definicja trasy:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "query/{controller}/{id}/{dateOfLog}",
defaults: new { id = RouteParameter.Optional,
dateOfLog = RouteParameter.Optional }
);
To nie działa, może robię coś złego, nie jestem pewien.
To jak jestem obecnie obchodzenia problemu, ale chciałbym wykorzystać moc ModelBinding o routingu silnika:
var queryValue = Request.RequestUri.ParseQueryString();
string dateOfLog = queryValue["dateOfLog"];
Proszę mi powiedzieć jak utworzyć definicję trasę, która będzie używać ModelBinding poprawnie i zamapuj mój niestandardowy adres URL na parametry kontrolera.
Próbowałem tego, bez powodzenia. Oto podpis metody: public DailyLogResponse Get (int id, DateTime dateOfLog), przy użyciu powyższej trasy nigdy nie trafia metoda. –
OK, spróbuj użyć typu łańcucha zamiast DateTime w parametrze method. – Moo
Tak, masz rację, to tak naprawdę jest to błąd parsowania DateTime, kiedy zmieniłem typ parametru, aby wywołać metodę, a wartości są obecne. Dzięki. –