我想知道是否有人可以对cookie管理有所了解。更确切地说,我想知道当用户在网站中开始会话时如何设置初始cookie。
目前,当ASP.NET_SessionId cookie
导航到域时,languageid
位于用户计算机上。我想在用户首次导航到网站时使用默认参数设置一个包含countryid
和Response.Cookies["language"].Value = "1";
Response.Cookies["country"].Value= "7";
详细信息的附加Cookie。
有谁知道是否有任何技术可以做到这一点,例如通过web.config设置或使用layout.cshtml放置cookie详细信息,如
{{1}}
或类似?,任何选项将不胜感激。
答案 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));
}
}
}
过滤器可以全局应用,因此您不必担心在每个操作方法或控制器上记住它。