【问题标题】:Set cookie value before view loaded in MVC?在MVC中加载视图之前设置cookie值?
【发布时间】:2014-06-03 00:11:03
【问题描述】:

我需要在调用视图之前设置一个 cookie 值。否则我必须刷新页面才能在视图中获取 cookie 值。这里的问题是 cookie 的值会进入控制器。

[HttpGet]
[Route("Abstract/{meetingCode}")]
[AllowAnonymous]
public ActionResult Index(string meetingCode)
{
 var meetingAbstract = new MeetingAbstract();
 meetingAbstract.Meeting = _abstractContext.GetMeetingWithMeetingCode(meetingCode);
 if (meetingAbstract.Meeting != null)
 {
   var cookie = new HttpCookie("_culture");
   cookie.Value = meetingAbstract.Meeting.language.language_locale_code;//"en-US"; 
   cookie.Expires = DateTime.Now.AddDays(365);
   cookie.Path = "/";
   this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);
...

有没有其他方法不用再次刷新页面来设置cookie值?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 cookies


    【解决方案1】:

    Cookies 有一些特殊的行为,我的意思是您在响应流中创建它们以发送到客户端,但在从客户端发送之前,它们在请求流中不可用。

    我的意思是,除非它是从客户端发送的,否则您无法访问 cookie。

    无论如何,为什么需要刷新页面才能访问刚刚创建的 cookie?使用同一个变量是不是更方便?

    [HttpGet]
    [Route("Abstract/{meetingCode}")]
    [AllowAnonymous]
    public ActionResult Index(string meetingCode)
    {
     var meetingAbstract = new MeetingAbstract();
     meetingAbstract.Meeting = _abstractContext.GetMeetingWithMeetingCode(meetingCode);
     var cookie;
     if (meetingAbstract.Meeting != null)
     {
       cookie = new HttpCookie("_culture");
       cookie.Value = meetingAbstract.Meeting.language.language_locale_code;//"en-US"; 
       cookie.Expires = DateTime.Now.AddDays(365);
       cookie.Path = "/";
       this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);
     } else {
        cookie = this.ControllerContext.HttpContext.Request.Cookies["_culture"];
     }
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多