8
votes

API ASP.NET Web API - Postage des formats de date du Royaume-Uni

Je souhaite que mes utilisateurs puissent publier des dates sur un contrôleur ASP.NET Web API au format britannique, tel que le 01/12/2012 (1er décembre 2012).

De ce que je peux dire par défaut, seul le format américain est accepté.

Puis-je changer quelque chose quelque part pour que le format britannique soit la valeur par défaut? J'ai essayé de changer le réglage de la mondialisation dans le Web.config, mais cela n'avait aucun effet.

Paul


6 commentaires

Vous devrez peut-être modifier le code de validation JQuery pour inclure une version localisée au Royaume-Uni. (Je suppose que vous utilisez mvc)


Le serveur est-il défini sur les paramètres de l'heure de la date britanniques?


J'ai la validation locale qui fonctionne, la question indique au contrôleur API, à moins que ce soit au format américain au moment où ma propriété DateTime est null.


Oui, c'est ma machine de dev dev mère qui est tout le Royaume-Uni


Vérifiez ma réponse ci-dessous Re:


J'ai essayé cela, comme indiqué dans ma question et les autres réponses.


3 Réponses :


1
votes

Il y a un exemple de localisation du sélecteur de date JQuery à en-GB ici: http://weblogs.asp.net/hajan/archive/2010/10/05/integration-f-jquery-datepicker -in-asp-net-net-web-site-localisation-part-3.aaspx

En outre, je vois que vous avez essayé de définir la culture à en-GB, mais je ne sais pas si vous avez essayé de définir la culture de l'interface utilisateur aussi dans web.config (et je ne sais pas si cela affecte les paquets JQuery en MVC ou non): p> xxx pré>

... ou si cela ne fonctionne pas (heh), pourquoi ne pas transmettre la valeur en tant que chaîne puis l'analyser dans votre contrôleur API: P>

using System.Globalization;

// fetch the en-GB culture
CultureInfo ukCulture = new CultureInfo("en-GB");
// pass the DateTimeFormat information to DateTime.Parse
DateTime myDateTime = DateTime.Parse("StringValue" ,ukCulture.DateTimeFormat);


4 commentaires

Ajouter l'uculture semble avoir fait le tour! Merci.


Désolé, j'ai sauté le pistolet. L'affichage 09/08/2012 montre la date du 9 septembre 2012 sur le serveur.


Il y a beaucoup d'endroits où je devrais faire cela, j'espérais un moyen plus global de faire cela plutôt que d'analyser les dates pour chaque modèle affiché à mes contrôleurs API. J'ai vu des liants de modèle personnalisés utilisés pour le côté MVC des objets, mais comme il s'agit d'un contrôleur d'API Web, je ne crois pas qu'il utilise des liants de modèle (j'utilise [Fromuri]).


Assez juste. Je ne trouve aucune référence qui ne contient pas seulement la culture et l'uculture dans web.config. J'espère que vous trouverez quelque chose.



2
votes

Fait ceci à l'aide d'un liant de modèle personnalisé, qui est légèrement différent des liants du modèle dans MVC3: xxx

et dans mon fichier global.aSax.cs, ajoutez cette ligne à l'API Pour utiliser ce classeur de modèle pour les valeurs DateTime: xxx

Voici la méthode dans mon contrôleur API: xxx

My LeadSindexViewModel La classe avait plusieurs propriétés DateTime qui étaient désormais tous les temps valides du Royaume-Uni.


2 commentaires

Au fait, cela ne fonctionne que pour obtenir des demandes ... rechercher toujours une solution pour les demandes postales.


Avez-vous trouvé une solution pour Demande postale ?



2
votes

Eh bien, je voulais aussi résoudre ceci au niveau mondial ... et a déchiré beaucoup de cheveux dans le processus. Il s'avère qu'il n'y a pas de points d'extension dans Webapi où on pourrait espérer intercepter les données de formulaire entrant et les modifier au besoin. Ça ne serait pas gentil. Donc, manque juste que je creusais aussi profondément que je pouvais dans le code source WebAPI pour voir ce que je pouvais trouver. J'ai fini par réutiliser la classe responsable de l'analyse de données de formulaire pour créer le modèle. J'ai ajouté quelques lignes pour traiter spécifiquement des dates. Cette classe, ci-dessous, peut être ajoutée à la configuration comme ceci: xxx

le formateur: xxx


0 commentaires