2009-09-22 7 views
0

Je construis un CMS personnalisé dans ASP.NET MVC et l'une des exigences est que le contenu ait une date de début et de fin qui dicte si la page apparaît ou non sur le site. Quelle est la meilleure approche à cela? Dois-je exécuter une sorte de chron job pour marquer le statut de la page en fonction de ses dates de publication? Quelqu'un a-t-il des ressources ou des conseils à ce sujet?Publication basée sur la date ASP.NET MVC

Répondre

1

Pourquoi ne pas faire quelque chose comme ça

bool visible = true; 
if (startdate > now || enddate < now) 
    visible = false; 

De cette façon, vous ne devez pas avoir un autre processus.

+0

Ou encore: bool visible = startdate

+0

ce n'est pas la partie délicate du travail :) –

0

Vous semblez vouloir rendre le modèle responsable du choix des éléments actifs. Selon la taille (nombre) des éléments interrogés, pour préserver le temps de réponse.

Si vous avez plusieurs éléments, il vaut mieux utiliser un service Windows pour marquer les éléments actifs.

Vous pouvez également indexer la colonne que vous utilisez pour marquer les éléments actifs.

alternativement, vous pouvez faire la vue responsable de l'affichage ou de masquer l'élément

foreach(var item in Model) 
if(Item.DisplayAllowed) renderpartial("ItemView",item); 
+2

Avoir un service Windows pourrait potentiellement résoudre les problèmes de mise à l'échelle comme vous le faites remarquer. Mais je serais assez hésitant à mettre la logique conditionnelle dans la vue. Les puristes de MVC parmi nous argumenteraient fortement qu'il ne devrait y avoir aucune logique dans la vue, les données que vous présentez à votre vue devraient déjà être correctement filtrées. –

+0

Je suis d'accord avec vous osborn, mais je fais anti-pattern si le pattern devient irréalisable ... en plus la vue est responsable de la gestion de la présentation, et ce problème est en quelque sorte. (On dirait que nous sommes dans la zone grise: D) –