/ / ASP.NET MVC - Accès aux données de cookies dans une classe autre que Controller - asp.net-mvc-3

ASP.NET MVC - Données de cookies d'accès dans la classe autre que contrôleur - asp.net-mvc-3

J'ai besoin d'écrire une fonction qui m'aide à faire quelque chose dans certains de mes contrôleurs, alors j'ai décidé de créer une classe appelée Assistant pour ça.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace HocVuiDiary.Helper
{
public class CookiesHelper
{
public void UpdateSubkey(string name, string subkey, string subvalue)
{
HttpCookie cookie;
if (Request.Cookies[name] == null)
{
cookie = new HttpCookie(name);
cookie[subkey] = subvalue;
}
else
{
cookie = Request.Cookies[name];
cookie[subkey] = subvalue;
}
cookie.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie);
}
}
}

Le problème est que je ne peux plus accéder à la requête ou à la réponse!
Montre moi le bon chemin, s'il te plait!

Réponses:

8 pour la réponse № 1

Vous pouvez utiliser HttpContext.Current.Request et HttpContext.Current.Response dans votre classe d'assistance.


3 pour la réponse № 2

Alors que la première réponse est techniquement exacte, jeJe rencontre des problèmes d'incohérence avec la création du cookie à l'aide d'un fichier .DLL externe. Le code derrière la classe appelle les méthodes du fichier .dll externe, le cookie est créé, mais après avoir navigué jusqu'à la page suivante, le cookie n'existe pas, parfois.

    public void CreateCookie(string cookieName, string key, string value)
{
int minutes = 95;
string encryptedValue = utilities.EncryptString(value);
HttpCookie cookie = new HttpCookie(cookieName);
cookie[key] = encryptedValue;
cookie.Expires = DateTime.Now.AddMinutes(minutes);
HttpContext.Current.Response.Cookies.Add(cookie);
}

Les autres appels à la classe externe fonctionnent comme prévu.

    public bool CheckCookieExists(string cookieName)
{
bool exists = true;
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
if (cookie != null)
{
return exists;
}
return exists = false;
}

0 pour la réponse № 3

C’est fondamentalement la même chose que d’accéder à la session. Utilisez httpcontext.current bien qu’il soit parfois mal vu, il est question ici de le nettoyer: Puis-je utiliser la variable ASP.NET Session [] dans une DLL externe

Ici, vous pouvez définir une interface comme IRequest pour extraire l’implémentation spécifique mais c’est à vous de décider.