Je fais la validation du champ sur la table personnalisée. Ceci est la macro sur le champ de validation:Kentico 9 - Cache de données Macro
{%
\t foreach (i IN CMSContext.Current.GlobalObjects.CustomTables["customtable"].Items.ItemsAsFields.IdNumber)
\t {
\t \t \t if (i == IdNumber.Value){
\t \t \t \t return false;
\t \t \t }
\t }
\t \t return true;
\t #%}
La question de commencer cette partie de la macro. CMSContext.Current.GlobalObjects.CustomTables [ "CustomTable"] Articles. ItemsAsFields.IdNumber
Cette ligne de macro doit contenir toutes les données entrées dans ma table personnalisée, mais elle n'a pas été récupérée. Dans ce cas, ma validation ne fonctionnera pas et je continuerai à entrer le même IdNumber.
C'est la manière dont j'ai découvert, quand j'ai couru cette macro via le système - Macro - Indice de référence:. {% CMSContext.Current.CMSContext.Current.CMSContext.Current.GlobalObjects.CustomTables [ "CustomTable"] Articles .ItemsAsFields.ItemID #%}
J'ai testé "Vider le cache", cela a fonctionné. Donc, il me semble que c'est un problème de cache.
donc j'ai désactivé toutes le cache dans Configuration - Système - Performance:
fichier cache de contenu du serveur
Server cache
cache client
mise en cache de sortie
et pourtant, cette ligne de macro ne retourne pas les dernières données lorsque j'ai entré de nouvelles données.
Est-il possible d'effacer le cache en utilisant l'option macro ou autre pour résoudre ce problème?
Merci Rocky. Il utilise le mécanisme CMS pour enregistrer les données, c'est ce que je peux comprendre, ne semble pas utiliser la requête SQL. si je devais utiliser ClearHashTables manuellement, Y at-il un exemple comment je peux l'appliquer à la macro? – YRuth
Vous devez [enregistrer une méthode de macro personnalisée] (https://docs.kentico.com/k10/macro-expressions/extending-the-macro-engine/registering-custom-macro-methods). Quoi qu'il en soit, puisque vous utilisez l'API de Kentico, cela ressemble à un bug et il est très probable qu'il a été corrigé par le correctif 9.0.46. – rocky