如何使用asp.net Web应用程序获取cookie?
发布时间:2020-12-16 03:44:56 所属栏目:asp.Net 来源:网络整理
导读:所有.我有一点编码问题,希望你能帮助我.我正在为我的工作制作一个秒表计时器.我的老板想为公司制定一个程序,帮助跟踪员工分配任务的时间.我被告知我应该使用asp.net,这是我以前从未使用过的.我设法使计时器工作到一定程度,除了保存会话外,它还能完成它应该做
所有.我有一点编码问题,希望你能帮助我.我正在为我的工作制作一个秒表计时器.我的老板想为公司制定一个程序,帮助跟踪员工分配任务的时间.我被告知我应该使用asp.net,这是我以前从未使用过的.我设法使计时器工作到一定程度,除了保存会话外,它还能完成它应该做的一切.我需要做的最后一件事是,如果用户关闭窗口或重新加载页面,则能够让计时器仍然滴答作响.我认为最好的方法是使用cookies.视图状态本身工作正常,但它不会在重新加载时保存计时器值.如果我在选项卡中打开一个新页面,它会启动所有内容.我发现了如何制作饼干,但我不相信我正确使用它们.如果有人能帮我解决这个问题,我将不胜感激.
这是aspx代码(我在那里有一些javascript,因为我试图看到以这种方式实现计时器,以便它更准确,所以请忽略它): <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="NerdcoreTimer._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> <script type="text/javascript"> var seconds = 0; var minutes = 0; var hours = 0; var tick; function stopCount() { clearTimeout(t); } function startCount() { document.getElementById('seconds').innerHTML = seconds; document.getElementById('minutes').innerHTML = minutes; document.getElementById('hours').innerHTML = hours; seconds = seconds + 1; if (seconds == 60) { seconds = 0; minutes = minutes + 1; } if (minutes == 60) { minutes = 0; hours = hours + 1; } tick = setTimeout("startCount()",1000) } function reset() { seconds = 0; minutes = 0; hours = 0; document.getElementById('seconds').innerHTML = seconds; document.getElementById('minutes').innerHTML = minutes; document.getElementById('hours').innerHTML = hours; } function startTimer() { return $find('Timer1')._startTimer(); } function stopTimer() { return $find('Timer1')._stopTimer(); } </script> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div> <table align="center"> <tr> <td> <asp:DropDownList ID="Tasks" runat="server" Width="75px"> <asp:ListItem>Task 1</asp:ListItem> <asp:ListItem>Task 2</asp:ListItem> <asp:ListItem>Task 3</asp:ListItem> <asp:ListItem>Task 4</asp:ListItem> <asp:ListItem>Task 5</asp:ListItem> <asp:ListItem>Task 6</asp:ListItem> </asp:DropDownList> </td> <td style="text-align:center"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Timer ID="Timer1" runat="server" Enabled="false" Interval="879" OnTick="Timer1_Tick"></asp:Timer> <asp:Label ID="hour2" runat="server" Text="0"></asp:Label> <asp:Label ID="hour1" runat="server" Text="0"></asp:Label> <asp:Label ID="colon1" runat="server" Text=":"></asp:Label> <asp:Label ID="min2" runat="server" Text="0"></asp:Label> <asp:Label ID="min1" runat="server" Text="0"></asp:Label> <asp:Label ID="colon2" runat="server" Text=":"></asp:Label> <asp:Label ID="sec2" runat="server" Text="0"></asp:Label> <asp:Label ID="sec1" runat="server" Text="0"></asp:Label> </ContentTemplate> </asp:UpdatePanel> </td> <td> <asp:Button ID="Start" runat="server" OnClientClick="startTimer()" Text="Start" Width="75px" OnClick="Start_Click" /> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="Stop" runat="server" OnClientClick="stopTimer()" Text="Stop" Width="75px" OnClick="Stop_Click" /> <asp:Button ID="Reset" runat="server" Text="Reset" Width="75px" OnClick="Reset_Click" /> </td> </tr> </table> </div>   <div> <table align="center"> <tr> <td style="text-align:center"> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:Label ID="startDate" runat="server" Text="Start Date: "></asp:Label> <asp:Label ID="startTime" runat="server" Text=""></asp:Label> <hr /> <asp:Label ID="stopDate" runat="server" Text="Stop Date: "></asp:Label> <asp:Label ID="stopTime" runat="server" Text=""></asp:Label> <hr /> </ContentTemplate> </asp:UpdatePanel> </td> </tr> </table> </div>   <div> <table align="center"> <tr> <td style="text-align:center"> <asp:UpdatePanel ID="UpdatePanel3" runat="server"> <ContentTemplate> <asp:Label ID="hours" runat="server" ></asp:Label> <asp:Label ID="minutes" runat="server" ></asp:Label> <asp:Label ID="seconds" runat="server" ></asp:Label> </ContentTemplate> </asp:UpdatePanel> </td> <td> <asp:UpdatePanel ID="UpdatePanel4" runat="server"> <ContentTemplate> <asp:Button ID="Button1" runat="server" OnClientClick="startCount()" Text="Start" Width="75px"/> </ContentTemplate> </asp:UpdatePanel> </td> </tr> <tr> <td> </td> <td> <asp:UpdatePanel ID="UpdatePanel5" runat="server"> <ContentTemplate> <asp:Button ID="Button2" runat="server" OnClientClick="stopCount()" Text="Stop" Width="75px"/> <asp:Button ID="Button3" runat="server" OnClientClick="reset()" Text="Reset" Width="75px"/> </ContentTemplate> </asp:UpdatePanel> </td> </tr> </table> </div> 这是C#中的代码隐藏文件: using System; using System.Data.SqlClient; using System.Configuration; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Timers; namespace NerdcoreTimer { public partial class _Default : System.Web.UI.Page { public int time_sec; public int time_min; public int time_hour; public string start; public string stop; HttpCookie cookieStartDate = new HttpCookie("startDate"); HttpCookie cookieTask = new HttpCookie("task"); HttpCookie cookieSec = new HttpCookie("seconds"); HttpCookie cookieMin = new HttpCookie("minutes"); HttpCookie cookieHr = new HttpCookie("hours"); HttpCookie cookieStopDate = new HttpCookie("stopDate"); //SQL connection string System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("Server=*****;Database=*****;User Id=*****;Password=*****;"); protected void Page_Load(object sender,EventArgs e) { //Check to see if there are cookies if (Request.QueryString["startDate"] != null) { ReadCookie_StartDate(); } if ((Request.QueryString["seconds"] != null) && (Request.QueryString["minutes"] != null) && (Request.QueryString["hours"] != null)) { ReadCookie_Timer(); //If the cookie values for seconds,minutes,and hours is not null,enable the timer and disable and enable the proper controls Timer1.Enabled = true; Stop.Enabled = true; Start.Enabled = false; Tasks.Enabled = false; } if (Request.QueryString["stopDate"] != null) { ReadCookie_StopDate(); } //Open the sql connection sqlConnection1.Open(); //Disable these controls on page load Stop.Enabled = false; Reset.Enabled = false; //Make sure the timer is disabled if starting a new session if (!IsPostBack) { Timer1.Enabled = false; } } protected void ReadCookie_StartDate() { //Get the cookie names String strCookieStart = Request.QueryString["startDate"].ToString(); String strCookieTask = Request.QueryString["task"].ToString(); //Grab the cookies HttpCookie cookieStart = Request.Cookies[strCookieStart]; HttpCookie cookieTask = Request.Cookies[strCookieTask]; //Check to make sure the cookies exist if ((cookieStart != null)&&(cookieTask != null)) { String strCookieStartValue = cookieStart.Value.ToString(); startTime.Text = strCookieStartValue; String strCookieTaskValue = cookieTask.Value.ToString(); Tasks.SelectedValue = strCookieTaskValue; } } protected void ReadCookie_Timer() { //Get the cookie names String strCookieSec = Request.QueryString["seconds"].ToString(); String strCookieMin = Request.QueryString["minutes"].ToString(); String strCookieHr = Request.QueryString["hours"].ToString(); //Grab the cookies HttpCookie cookieSec = Request.Cookies[strCookieSec]; HttpCookie cookieMin = Request.Cookies[strCookieMin]; HttpCookie cookieHr = Request.Cookies[strCookieHr]; //Check to make sure the cookies exist if ((cookieSec != null)&&(cookieMin != null)&&(cookieHr != null)) { String strCookieSecValue = cookieSec.Value.ToString(); String strCookieMinValue = cookieMin.Value.ToString(); String strCookieHrValue = cookieHr.Value.ToString(); sec1.Text = strCookieSecValue; min1.Text = strCookieMinValue; hour1.Text = strCookieHrValue; } } protected void ReadCookie_StopDate() { //Get the cookie name String strCookieStop = Request.QueryString["stopDate"].ToString(); //Grab the cookie HttpCookie cookieStop = Request.Cookies[strCookieStop]; //Check to make sure the cookie exists if (cookieStop != null) { String strCookieStopValue = cookieStop.Value.ToString(); stopTime.Text = strCookieStopValue; } } protected void Start_Click(object sender,EventArgs e) { //Start the timer Timer1.Enabled = true; //Get the start date start = DateTime.Now.ToString(); if (startTime.Text == "") { startTime.Text = start; } //Store the start date in a cookie Start_Session(); //Enable these controls Stop.Enabled = true; //Disable these controls Start.Enabled = false; Tasks.Enabled = false; Reset.Enabled = false; } protected void Timer1_Tick(object sender,EventArgs e) { //Add to the sec1 label time_sec = int.Parse(sec1.Text); time_sec = time_sec + 1; sec1.Text = time_sec.ToString(); //Hide the sec2 label if (sec1.Text == "10") { sec2.Visible = false; } //Add to the min1 label if (sec1.Text == "60") { sec2.Visible = true; time_min = int.Parse(min1.Text); sec1.Text = "0"; time_min = time_min + 1; min1.Text = time_min.ToString(); } //Hide the min1 label if (min1.Text == "10") { min2.Visible = false; } //Add to the hour1 label if (min1.Text == "60") { min2.Visible = true; time_hour = int.Parse(hour1.Text); min1.Text = "0"; time_hour = time_hour + 1; hour1.Text = time_hour.ToString(); } //Hide the hour2 label if (hour1.Text == "10") { hour2.Visible = false; } //Store the sec1,min1,and hour1 values into cookies TimerTick_Session(); } protected void Stop_Click(object sender,EventArgs e) { //Get the stop date stop = DateTime.Now.ToString(); stopTime.Text = stop; //Store the stop date in a cookie Stop_Session(); //Disable the timer and this control Timer1.Enabled = false; Stop.Enabled = false; //Enable these controls Start.Enabled = true; Reset.Enabled = true; //Store the selected task,start date,stop date and totalTime string tsk = Tasks.SelectedValue; string dateStart = startTime.Text; string dateStop = stopTime.Text; //Create a sql query string string sqlString = "INSERT TimeSheet (Task,DateStart,DateStop) VALUES (@Task,@DateStart,@DateStop)"; //Create a sql command using the query string System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sqlString); //Add the selected task value,start date value,stop date and totalTime values to the query cmd.Parameters.AddWithValue("@Task",tsk); cmd.Parameters.AddWithValue("@DateStart",dateStart); cmd.Parameters.AddWithValue("@DateStop",dateStop); //Give the sql command a connection string cmd.Connection = sqlConnection1; //Execute the sql command cmd.ExecuteNonQuery(); //Close the sql connection sqlConnection1.Close(); } protected void Reset_Click(object sender,EventArgs e) { //Clear the start and stop date labels startTime.Text = ""; stopTime.Text = ""; //Reset these counters time_sec = 0; time_min = 0; time_hour = 0; //Reset the timer labels sec1.Text = "0"; min1.Text = "0"; hour1.Text = "0"; //Make visible these timer labels sec2.Visible = true; min2.Visible = true; hour2.Visible = true; //Disable the timer and these controls Timer1.Enabled = false; Reset.Enabled = false; Stop.Enabled = false; //Enable these controls Start.Enabled = true; Tasks.Enabled = true; } protected void Start_Session() { //Create a new cookie for the start date and selected task //HttpCookie cookieStartDate = new HttpCookie("startDate"); //HttpCookie cookieTask = new HttpCookie("task"); //Set the cookie values cookieStartDate.Value = start; cookieTask.Value = Tasks.SelectedValue; //Set the cookie to expire in about 8 hours DateTime startDateExp = DateTime.Now; TimeSpan startDateExpMin = new TimeSpan(0,500,0); cookieStartDate.Expires = startDateExp + startDateExpMin; DateTime taskExp = DateTime.Now; TimeSpan taskExpMin = new TimeSpan(0,0); cookieTask.Expires = taskExp + taskExpMin; //Add the cookie Response.Cookies.Add(cookieStartDate); Response.Cookies.Add(cookieTask); } protected void TimerTick_Session() { //Create a new cookies for the timer /*HttpCookie cookieSec = new HttpCookie("seconds"); HttpCookie cookieMin = new HttpCookie("minutes"); HttpCookie cookieHr = new HttpCookie("hours");*/ //Set the cookie values cookieSec.Value = sec1.Text; cookieMin.Value = min1.Text; cookieHr.Value = hour1.Text; //Set the cookies to expire in about 8 hours DateTime secExp = DateTime.Now; TimeSpan secExpMin = new TimeSpan(0,0); cookieSec.Expires = secExp + secExpMin; DateTime minExp = DateTime.Now; TimeSpan minExpMin = new TimeSpan(0,0); cookieMin.Expires = minExp + minExpMin; DateTime hrExp = DateTime.Now; TimeSpan hrExpMin = new TimeSpan(0,0); cookieHr.Expires = hrExp + hrExpMin; //Add the cookies Response.Cookies.Add(cookieSec); Response.Cookies.Add(cookieMin); Response.Cookies.Add(cookieHr); } protected void Stop_Session() { //Create a new cookie for the stop date //HttpCookie cookieStopDate = new HttpCookie("stopDate"); //Set the cookie value cookieStopDate.Value = stop; //Set the cookie to expire in about 8 hours DateTime stopDateExp = DateTime.Now; TimeSpan stopDateExpMin = new TimeSpan(0,0); cookieStopDate.Expires = stopDateExp + stopDateExpMin; //Add the cookie Response.Cookies.Add(cookieStopDate); } } } 任何帮助获取此代码以保存会话状态将不胜感激.谢谢. 解决方法
我想快速评论数据库处理,因为您可能想要考虑从表示层抽象数据层,换句话说,考虑为数据处理创建一个单独的项目或类,而不是在同一个地方做所有事情.
此外,您可能已经发现,但查看状态保留了回发之间的页面状态,因为它在页面上存储会话信息,但是在重新加载的情况下,则不再有视图状态. 除此之外,我的道歉我很快就读到了,但似乎你正在尝试重写微软会话处理,寻找asp.net会话处理. 那些是我的2美分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP MVC单选按钮验证
- asp.net-mvc-3 – 自动将jquery日期选择器添加到所有[DataT
- asp.net – BC30560:’ExtensionAttribute’在名称空间’S
- asp.net – 什么条件导致Web浏览器显示“Page Expired”消息
- asp.net-mvc – ActionLink无法在“if”块内渲染
- asp.net – 如何将HttpRequestBase转换为HttpRequestMessag
- Asp.net托管相当于Dreamhost(定价,功能和支持)
- asp.net核心 – ASP – 启动时核心迁移EF核心SQL DB
- asp.net neatUpload 支持大文件上传组件
- 如何重现由asp.net MVC默认成员资格创建的密码哈希
推荐文章
站长推荐
- asp.net – 如何修复“’ddlAssignedTo’有一个无
- asp.net-mvc-3 – 如何在ASP.NET MVC3控制器中访
- asp.net – 正在生成无效的Webresource.axd参数
- 单个ASP.NET UserControl事件的多个订阅者?
- asp.net-mvc – MVC ELMAH和SQL Azure
- asp.net-mvc – 接受逗号和点作为小数分隔符[重复
- Asp.Net Mvc突出显示当前页面链接技术?
- asp.net-mvc-3 – Razor View Page无法添加为新项
- ASP.NET hostingEnvironment / shadowCopyBinAss
- asp.net-mvc – 将Angular与MVC 5捆绑在一起后出
热点阅读