Mar*_*llo 3 c# asp.net cookies asp.net-mvc datetime
我正在开发一个ASP .NET项目,目前我正在使用此代码在cookie上存储和检索DateTime:
HttpCookie cookie = new HttpCookie("myCookie");
if (Request.Cookies["myCookie"] != null)
{
cookie = Request.Cookies["myCookie"];
}
else
{
cookie["From"] = DateTime.Now.AddDays(-7).ToShortDateString();
cookie["To"] = DateTime.Now.ToShortDateString();
Response.Cookies.Add(cookie);
}
model.FromDate = DateTime.Parse(cookie["From"]);
model.ToDate = DateTime.Parse(cookie["To"]);
Run Code Online (Sandbox Code Playgroud)
在我的视图中,我使用Razor恢复模型值,如下所示:
<input type="text" id="from" value="@Model.FromDate.ToShortDateString()" readonly="readonly" />
<input type="text" id="to" value="@Model.ToDate.ToShortDateString()" readonly="readonly" />
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它时工作正常,但是当我上传到生产时,从cookie恢复DateTime时,日期会在一天内更改.例如,我选择了2016年3月25日到2016年4月1日的日期范围,然后我又转到了另一页,当我回到此页面时,页面显示的日期范围是2016年3月24日到2016年3月31日,一天减少.
你知道我在这里做错了什么,为什么这只是在生产中发生(我想是与服务器日期相关的东西),最后,什么是在cookie上存储和检索DateTime的最佳方法?
您可以将日期存储在Ticks中
cookie["From"] = DateTime.Now.AddDays(-7).Ticks.ToString();
cookie["To"] = DateTime.Now.Ticks.ToString();
Run Code Online (Sandbox Code Playgroud)
并像这样恢复:
model.FromDate = new DateTime(Convert.ToInt64(cookie["From"]));
model.ToDate = new DateTime(Convert.ToInt64(cookie["To"]));
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助
归档时间: |
|
查看次数: |
1338 次 |
最近记录: |