ASP.NET MVC Session - PullRequest
       12

ASP.NET MVC Session

2 голосов
/ 25 ноября 2010

это плохая практика?

using System.Web.Mvc;

namespace WebInventaris.Utils.Session
{
    public static class SessionControllerExtensions
    {
        public static void SetSessionVar<T>(this Controller controller, string field, T value)
        {
            controller.Session[field] = value;
        }

        public static T GetSessionVar<T>(this Controller controller, string field)
        {
            return (T) controller.Session[field];
        }
    }
}

Я пытаюсь отделить Сессию от моих контроллеров, но у меня нет хорошего представления об этих методах.

1 Ответ

5 голосов
/ 25 ноября 2010

Нет ничего плохого в том, чтобы использовать сеанс напрямую с ваших контроллеров (это одна из причин, по которой он был представлен как свойство класса Controller).И я не вижу преимущества замены:

Session["foo"] = "bar";

вызовом метода расширения:

this.SetSessionVar("foo", "bar");

Где это, возможно, немного интереснее, это ваш универсальныйgetter, но все же он не является безопасным типом, так как вы используете приведение внутри этого метода, что также могло быть сделано в действии контроллера.Итак, в заключение я бы не сказал, что это плохая практика, но я не вижу никакой пользы от такого класса, и он также делает ваш код менее читаемым для других разработчиков, которым необходимо понимать, что это метод расширения и что стоит за этим.сцены это просто использует сеанс.

...