J'aimerais entendre vos opinions et peut-être de meilleures suggestions pour le scénario suivant:ASP.NET MVC, ActionFilters, classes statiques et les données qui passent autour
Je définir un ActionFilter personnalisé qui fait un peu de travail et sort avec une certaine valeur. Je voudrais utiliser cette valeur dans les actions du contrôleur et dans les modèles.
Maintenant, je pourrais utiliser TempData passer cette valeur de la ActionFilter à toute méthode d'action du contrôleur, distribuer cette valeur sur tous les modèles qui sont transmis à des vues renvoyées.
Je suis sûr que cela fonctionnera, mais ce TempData sera là en session où et quand personne n'a besoin en fait plus. La valeur est censée être utilisée exclusivement dans le code au moment d'une demande unique, après quoi elle est effectivement invalidée.
Je suis venu avec deux options:
En ActionFilter, je définir cette valeur dans TempData dans OnActioExecuting() et je l'enlever dans OnActionExecuted(). Est-ce que je comprends bien qu'au moment où OnActionExecuted est appelé, l'action du contrôleur est terminée, la réponse a déjà été générée et ce contenu TempData n'est pas passé à la session YET?
je définis seulement dans une de mes classes personnalisées statiques (logiques) une propriété publique pour cette valeur et je l'utilise en cas de besoin. Ce champ statique ne sera-t-il pas perdu entre OnActionExecuting() et l'exécution de la méthode du contrôleur? Y a-t-il d'autres problèmes avec la possibilité de perdre cette valeur pendant le traitement de la requête sur le serveur?
Y at-il d'autres options que je/meilleures havem't jugeais encore?
en fait assez intéressant. Est-ce que les paramètres du constructeur d'action seront automatiquement mappés aux clés de collection ActionParameters? – User
Oui, les paramètres d'action doivent être la méthode préférée pour transmettre la valeur dans le contrôleur. – kazimanzurrashid
Finalement, j'ai aimé cette approche, même si elle nie définitivement le principe DRY. Merci pour le conseil. – User