Je suis actuellement en train de réécrire une macro XSLT pour afficher les noeuds enfants de la page en cours, en fonction des variables querystring définies pour 'month' et 'year '. Ceci est utilisé pour une page de listes de nouvelles qui affiche des articles pour une certaine période.Utilisation de Razor LINQ .Where() pour trouver des noeuds umbraco avec une valeur de date donnée
Dans l'ancienne macro, je parcourt et sélectionne les nœuds où la partie mois de la propriété "newsDate" (qui est un champ datepicker) et les affecte à la variable nodelist. $ Displaymonth est collecté à partir de querystring. J'ai des difficultés à créer une liste similaire de nœuds en utilisant une syntaxe de rasoir. En supposant que le mois querystring est Août, je l'ai essayé des choses comme
Model.Children.Where(umbraco.library.FormatDateTime(newsDate,'M') + " == 8");
Model.Children.Where("Convert.ToDateTime(newsDate).Month == \"8\"");
Model.Children.Where("newsDate.Month == \"8\"");
Model.Children.Where("newsDate.Value.Month == \"8\"");
Model.Children.Where(i=>Convert.ToDateTime(i.GetProperty("newsDate").Value).Month==8))
Les erreurs de débogage se plaignent souvent qu'il n'y a pas de propriété « mois » à l'intérieur ma variable Newsdate. Soit cela ou "Aucune propriété ou date de champ n'existe dans le type 'Func`2'". Il semble traiter ma propriété Datepicker comme une chaîne quoi que je fasse, comme décrit here mais j'utilise la dernière version de umbraco.
Comment puis-je trouver des enfants en convertissant le mois/l'année d'une propriété datepicker (un objet DateTime dans Umbraco) et en le comparant à une variable? Comment puis-je même obtenir cette propriété date et extraire le mois/année, alors que dans une déclaration .Where?
'Where' accepte une expression lambda de sorte que vous utilisez une syntaxe incorrecte. Le chercher. –
De plus, il n'y a pas de type de données 'DatePicker' en C# donc je n'ai aucune idée de ce que' newDate' est et je ne peux pas vous donner un exemple. –
http://umbraco.com/follow-us/blog-archive/2011/3/1/umbraco-razor-feature-walkthrough-%E2%80%93-part-4 - "Avec DynamicObject (DynamicNode aussi, car il hérite de), l'analyseur C# compiler/razor ne vous permet pas d'utiliser la syntaxe familière lambda pour filtrer vos ensembles Cela est dû au fait que nous renvoyons maintenant DynamicObject [DynamicNodeList] pour autoriser le chaînage de méthode. " – giles