如何在ASP.NET MVC中设置默认初始化cookie

时间:2011-05-29 23:55:51

标签: c# asp.net-mvc cookies

我想知道是否有人可以对cookie管理有所了解。更确切地说,我想知道当用户在网站中开始会话时如何设置初始cookie。

目前,当ASP.NET_SessionId cookie导航到域时,languageid位于用户计算机上。我想在用户首次导航到网站时使用默认参数设置一个包含countryidResponse.Cookies["language"].Value = "1"; Response.Cookies["country"].Value= "7"; 详细信息的附加Cookie。

有谁知道是否有任何技术可以做到这一点,例如通过web.config设置或使用layout.cshtml放置cookie详细信息,如

{{1}}

或类似?,任何选项将不胜感激。

2 个答案:

答案 0 :(得分:3)

我在ASP.NET MVC中没有使用过多的cookie,但我这样做的方法是在Global.asax中有一小段代码或者在每个请求上执行一个单独的基本控制器。此代码将检查HttpContext是否存在此类cookie,如果它不存在,则会创建一个。我将编写代码示例并很快更新此答案。

答案 1 :(得分:3)

您可以在动作过滤器中执行此操作:

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));
        }
    }
}

过滤器可以全局应用,因此您不必担心在每个操作方法或控制器上记住它。