Как установить файл cookie инициализации по умолчанию в ASP.NET MVC - PullRequest
4 голосов
/ 30 мая 2011

Мне было интересно, сможет ли кто-нибудь пролить свет на управление файлами cookie. Точнее, я хотел бы знать, как я могу настроить начальные файлы cookie, когда пользователь начинает сеанс на веб-сайте.

В настоящее время ASP.NET_SessionId cookie находится на компьютерах пользователей, когда они переходят в домен. Я хотел бы настроить дополнительный файл cookie с деталями languageid и countryid с параметрами по умолчанию при первом переходе пользователя на сайт.

Кто-нибудь знает, есть ли какой-нибудь метод для этого, например, через настройку web.config или размещение деталей cookie с использованием layout.cshtml, например

Response.Cookies["language"].Value = "1";

Response.Cookies["country"].Value= "7";

или аналогичный?, Любой вариант будет оценен.

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Вы можете сделать это в фильтре действий:

public class LocalizationAwareAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var httpContext = filterContext.HttpContext.Current;

        if (!httpContext.Cookies.Keys.Contains("language"))
        {
            httpContext.Response.AppendCookie(new HttpCookie("language", 1));
        }
        if (!httpContext.Cookies.Keys.Contains("country"))
        {
            httpContext.Response.AppendCookie(new HttpCookie("country", 7));
        }
    }
}

Фильтр может применяться глобально, поэтому вам не нужно беспокоиться о его запоминании для каждого метода действия или контроллера.

3 голосов
/ 30 мая 2011

Я мало работал с cookie-файлами в ASP.NET MVC, но я бы использовал небольшой блок кода в Global.asax или отдельный базовый контроллер, который выполняется при каждом запросе.Этот код будет проверять HttpContext на наличие такого куки, и если он не существует, он создаст его.Я разработаю пример кода и скоро обновлю этот ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...