Pour quelqu'un d'autre ayant les mêmes problèmes que moi, j'ai un certain nombre de pointeurs qui peuvent vous aider. Ce sont seulement des choses que j'ai trouvées qui m'ont aidé et qui ne sont que des conseils pour quelqu'un d'autre qui a gaspillé des semaines de temps précieux à se demander pourquoi un code apparemment correct ne fonctionne pas. Je suis bien conscient que mes compétences sont faibles (vieil homme), mais si cela aide à sauver une personne, alors mon temps n'a pas été complètement perdu.
Ceci est pour les formulaires Web C# .NET 3.5, pas MVC.
Tout d'abord, assurez-vous que les propriétés ContentType et ContentEncoding de l'objet Response sont définies sur JSON. Dans le passé, je l'ai utilisé « text/plain », mais cela ne semble pas fonctionner pour moi à cette occasion:
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = Encoding.UTF8;
Si vous utilisez LINQ, la création d'un nouvel objet dans l'ordre et mettre en forme le calendrier attend aidera à minimiser les problèmes d'irrégularités de données. Si vous avez besoin de rendez-vous en lecture seule, vous pouvez simplement ajouter l'option à la liste. L'élément « titre » ci-dessous fonctionne comme un ISNULL ou COALESCE serait dans SQL, pour éviter nulls retour:
var apps = (
from a in db.Appointments
select new {
id = a.id,
start = a.startTime.Value,
end = a.endTime.Value,
title = a.subjectLine == null ? "" : a.subjectLine
}).ToList();
Bien qu'il existe de nombreuses façons de sérialisation l'ensemble de données en JSON, j'ai trouvé la méthode la plus propre est d'utiliser la bibliothèque NewtonSoft Json.NET.Ceci est aussi simple que l'ajout d'une ligne pour créer un objet JSON, avec la mise en forme de date ISO8601 nécessaire:
return JsonConvert.SerializeObject(apps, new IsoDateTimeConverter());
En ce qui concerne le côté jQuery va je ne montre que les « données » fonction, comme cela est la partie qui me avait déconcerté la plus longue:
data: function(start, end, callback) {
$.ajax({
url: "/content/handlers/GetScheduledAppointments.ashx",
type: "GET",
success: function(json) {
callback(json);
},
async: false
});
}
une astuce pratique concernant les dates, que je suis venu avant de commencer à utiliser la bibliothèque Json.NET - si vous ne pouvez pas obtenir .NET pour retourner les dates dans un format que jWC aime, alors utilisez la bibliothèque [Date.js pour effectuer une mise en forme supplémentaire dans le jQuery lui-même. Pendant des jours je n'ai pas pu obtenir mon back-end pour produire les heures de début et de fin dans un format qui serait rendu sur le calendrier, peu importe ce que j'ai essayé. Dans tous les exemples de fonctionnement (avec des données locales générées dans le jQuery) les dates ont été créées en utilisant le format suivant:
new Date(year, month, day, hour, minute)
Ainsi, en utilisant cette base, il est également possible de lancer explicitement les dates de retour de l'arrière fin de compte, comme la bibliothèque Date.js prendra presque tout approche d'une date et sa magie:
data: function(start, end, callback) {
$.ajax({
url: "/content/handlers/GetScheduledAppointments.ashx",
type: "GET",
success: function(json) {
if ($.isArray(json)) {
$.each(json, function(key, value) {
value.start = new Date(value.start);
value.end = new Date(value.end);
});
}
callback(json);
},
async: false
});
}
Je sais que rien de tout cela est très leet (ou même optimisé), mais nous espérons que cela peut être utile à certains les gens qui ont de la difficulté avec jWC et .NET.
tx beaucoup .. Je me heurtais à des problèmes d'intégration jWC avec asp.net MVC .. ce poste m'a aidé – Premkumar
Très bon homme, je luttais avec elle à partir de 2 jours, j'ai encore besoin d'aide, seriez-vous en mesure de vous partagez "json" réponse? Je veux juste vérifier le format DateTime envoyé par le serveur, j'utilise l'API Web. –
Je pourrais si je l'avais encore! Malheureusement, je ne travaille plus dans le post où ce code était, donc je suis vraiment désolé. J'espère que vous réussirez à le faire trier! – mafbailey