我想要一个页面上的下拉列表,我可以选择一些货币值来显示。
然后,在任何页面上,我可以通过使用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" />
}
答案 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