MVC Access存储的cookie

时间:2014-07-09 15:35:23

标签: asp.net-mvc cookies

我想要一个页面上的下拉列表,我可以选择一些货币值来显示。

然后,在任何页面上,我可以通过使用Cookie 来访问所选的值。

但是,我似乎只能访问cookie(屏幕上显示),如果它已发布。否则刷新页面,它是空白的

我做错了什么?

控制器

public ActionResult CurrencySelection()
    {
        Response.Cookies.Add(Request.Cookies["Currency"]);
        return PartialView();
    }

    [HttpPost]
    public ActionResult CurrencySelection(String currencySelection)
    {
        HttpCookie fc = new HttpCookie("Currency", currencySelection);
        Response.Cookies.Add(fc);

        return PartialView();
    }

我的观点/帮助:

@{
    String currency = Response.Cookies["Currency"].Value;

    @("CURRENCY: " + currency)    
}

  @using (Ajax.BeginForm("CurrencySelection", "Header", new AjaxOptions { UpdateTargetId = "currencySelectionDiv" }))
 {      
    <select name="currencySelection">
      <option value="GBP">GBP</option>
      <option value="DKK">DKK</option>
      <option value="SEK">SEK</option>
      <option value="EURO">EURO</option>
    </select>

    <input  type="submit" value="Update" id="submit" />   
}

1 个答案:

答案 0 :(得分:2)

为了读取cookie客户端,需要在HttpOnly标志设置为false的情况下创建它。假设您最初创建cookie服务器端,那么您的代码看起来像

HttpCookie fc = new HttpCookie("Currency", currencySelection);
fc.HttpOnly = false; // enable client-side access
Response.Cookies.Add(fc);

这意味着在您的视图中,没有任何服务器端交互,您可以通过使用Javascript解析document.cookie属性来查询该cookie值。在解析cookie方面,网上有大量的例子,事实上,文档中提供了一个很好的小实用程序 - 请参阅A little framework: a complete cookies reader/writer with full unicode support