2017-10-08 2 views
-1

Pour le type DateTime, si j'ai une propriété DateTime dans une classe, j'essaie de modéliser cette classe avec le corps HTTP post json, la propriété DateTime ne se lie pas , comment? Mais si j'utilise la liaison de paramètres, cela fonctionne bien. Donc, ci-dessous le code fonctionneAPI Web ASP.NET: la liaison DateTime ne fonctionne pas dans le corps json

[Route("v1/taxiqi")] 
[HttpPost] 
public object UpdateTaxiQI(string status, DateTime updateTime) 
{ 
    ... 
} 

Mais pas pour le code ci-dessous

[Route("v1/taxiqi")] 
[HttpPost] 
public object UpdateTaxiQI(TaxiQI taxiQI) 
{ 
    ... 
} 
public class TaxiQI 
{ 
    public string Status; 
    public DateTime UpdateTime; 
} 

J'utilise la dernière API Web ASP.NET. Les champs fonctionnent car il fonctionne sur mon autre API, en plus, le champ Statut est lié avec succès. Et j'ai déjà essayé des propriétés, même résultat.

Désolé, j'ai découvert la cause, elle est causée par notre base de code utilise une coutume DateTimeConverter pour JSON.NET et il attend un style JavaScript tiques au lieu d'une chaîne de date

+0

Où est votre getter et settter? – Svek

+0

Veuillez mettre à jour votre publication pour afficher votre exemple JSON. – mjwills

+0

Quelle version d'ASP.NET WebAPI utilisez-vous? Les versions antérieures utilisent 'DataContractJsonSerializer', voir [sérialiseurs Json dans ASP.NET et autres] (https://techblog.dorogin.com/json-serializers-in-asp-net-and-other-e12d3d62933f). – dbc

Répondre

2

Votre classe TaxiQI est incorrecte.
Le JSON fonctionne avec des propriétés publiques et non publiques. Changer votre classe à ceci:

public class TaxiQI 
{ 
    public string Status { get; set; } 
    public DateTime UpdateTime { get; set; } 
} 
+0

J'utilise la dernière API Web ASP.NET. Les champs fonctionnent car il fonctionne sur mon autre modèle, en plus, le champ Statut est lié avec succès – imgen

1

En plus de la réponse de Svek, il peut être plus sage d'utiliser un lieu Nullable<DateTime> ou DateTime?. Les valeurs nulles sont une possibilité intrinsèque chaque fois que vous désérialisez des données.

+0

J'ai essayé DateTime? aussi, même résultat – imgen

0

Je trouve la cause racine, ma mauvaise, elle est causée par notre base de code utilise un DateTimeConverter personnalisé pour JSON.NET et il attend un style JavaScript tiques au lieu d'une chaîne de date