Web-API-ModelBinding von URI

9

Also habe ich einen benutzerdefinierten Model Binder implementiert für DateTime type und ich registriere ihn wie folgt:

%Vor%

und dann habe ich 2 Beispielaktionen eingerichtet, um zu sehen, ob meine benutzerdefinierte Modellbindung stattfindet:

%Vor%

Wenn ich beide Aktionen von erwähnten URLs aus ausführen und aufrufen, wird die user -Eigenschaft von JoinDate erfolgreich mit dem von mir konfigurierten benutzerdefinierten Binder gebunden, aber BindDateTime 's datetime -Parameter wird nicht mit dem benutzerdefinierten Binder gebunden .

Ich habe bereits in config angegeben, dass alle DateTime meinen benutzerdefinierten Ordner verwenden sollen, warum dann die Gleichgültigkeit? Vorschläge werden sehr geschätzt.

CurrentCultureDateTimeAPI.cs:

%Vor%

HINWEIS: Wenn ich [FromUri(Binder=typeof(CurrentCultureDateTimeAPI))]DateTime datetime verwende, funktioniert es wie erwartet, aber warum?

    
lbrahim 19.07.2014, 20:47
quelle

2 Antworten

5

Ziemlich überraschend auch:)

Mein anfänglicher Zweifel war diese Linie:

%Vor%

MSDN sagt GlobalConfiguration = & gt; GlobalConfiguration provides a global System.Web.HTTP.HttpConfiguration for ASP.NET application .

Aber aus seltsamen Gründen scheint das bei diesem speziellen Szenario nicht zu funktionieren.

Also,

Fügen Sie diese Zeile einfach in die statische Klasse WebApiConfig

ein %Vor%

, damit Ihre WebAPIConfig -Datei wie folgt aussieht:

%Vor%

Und alles funktioniert gut, weil diese Methode direkt von WebAPI framework aufgerufen wird, also wird Ihr CurrentCultureDateTimeAPI sicher registriert.

Überprüft das mit Ihrer Lösung und funktioniert super.

Hinweis: (Aus den Kommentaren) Sie können Attribute Routing weiterhin unterstützen und diese Zeile config.MapHttpAttributeRoutes() nicht auskommentieren.

Aber trotzdem, es wäre großartig, wenn jemand sagen könnte, warum GlobalConfiguration nicht funktioniert

    
now he who must not be named. 22.07.2014, 09:25
quelle
-5

Es sieht so aus, als ob Sie einige Daten auf dem Server veröffentlichen möchten. Versuchen Sie, FromData zu verwenden und JSON zu veröffentlichen. FromUri wird normalerweise verwendet, um einige Daten abzurufen. Verwenden Sie die WebAPI-Konventionen und lassen Sie sie für Sie arbeiten.

    
spacerogue 19.07.2014 21:29
quelle