以下代码是一个功能齐全的ASP.NET计算器。即使用户关闭浏览器,如何保留所有计算的历史记录?例如,如果用户输入5 + 10,我需要它在我关闭并再次打开程序后显示15。
此外,有没有办法显示过去10分钟内所有计算的历史记录?
<script runat="server">
sub getvalue0(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn0.Text
end sub
sub getvalue1(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn1.Text
end sub
sub getvalue2(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn2.Text
end sub
sub getvalue3(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn3.Text
end sub
sub getvalue4(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn4.Text
end sub
sub getvalue5(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn5.Text
end sub
sub getvalue6(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn6.Text
end sub
sub getvalue7(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn7.Text
end sub
sub getvalue8(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn8.Text
end sub
sub getvalue9(s as Object, e as EventArgs)
txtinput.Text=txtinput.Text & btn9.Text
end sub
sub check(s as Object, e as EventArgs)
val1.Text=txtinput.Text
txtinput.Text=""
end sub
sub sum(s as Object, E as EventArgs)
val2.Text=txtinput.Text
dim result=cInt(val1.Text)+cInt(val2.Text)
txtinput.Text=result
end sub
sub clear(s as Object, e as EventArgs)
txtinput.Text=""
val1.Text=""
val2.Text=""
end sub
</script>
<html>
<title> Basic Calculator</title>
<body>
<form id="Form1" runat="server">
<h1>Basic Calculator</h1>
<asp:TextBox id="txtinput" runat="server" />
<table style="background:#00ffff">
<tr>
<td><asp:Button id="btn0" Text="0" runat="server" OnClick="getvalue0" /></rd>
<td><asp:Button id="btn1" Text="1" runat="server" OnClick="getvalue1" /></rd>
<td><asp:Button id="btn2" Text="2" runat="server" OnClick="getvalue2"/></rd>
<td><asp:Button id="btnsum" Text="+" runat="server" OnClick="check"/></rd>
</tr>
<td><asp:Button id="btn3" Text="3" runat="server" OnClick="getvalue3" /></rd>
<td><asp:Button id="btn4" Text="4" runat="server" OnClick="getvalue4"/></rd>
<td><asp:Button id="btn5" Text="5" runat="server" OnClick="getvalue5"/></rd>
<td><asp:Button id="btnequal" Text="=" runat="server" OnClick="sum" /></rd>
</tr>
<td><asp:Button id="btn6" Text="6" runat="server" OnClick="getvalue6"/></rd>
<td><asp:Button id="btn7" Text="7" runat="server" OnClick="getvalue7"/></rd>
<td><asp:Button id="btn8" Text="8" runat="server" OnClick="getvalue8"/></rd>
<td><asp:Button id="btnclear" Text="Clear" runat="server" OnClick="clear"/></rd>
</tr>
<tr><td><asp:Button id="btn9" Text="9" runat="server" OnClick="getvalue9"/></td></tr>
</table>
<asp:Textbox id="val1" Visible="false" runat="server"/>
<asp:Textbox id="val2" visible="false" runat="server"/>
</form>
</body>
</html>
答案 0 :(得分:0)
如果您希望在关闭浏览器后保持此状态,则需要将数据保存在某个位置,例如数据库或文件。
你可以尝试在会话中存储但是根据你的网站设置方式,这里没有保证它会持续多久(有关更多信息,请参阅不同类型的会话模式)。
答案 1 :(得分:0)
我会创建一个名为SetText的新函数。您将使用要设置的值从所有其他事件处理程序中调用此方法。
sub setText(s as String)
Dim myCookie As New HttpCookie("calculatorValue")
myCookie.Value = s
myCookie.Expires = DateTime.Now.AddMinutes(30)
Response.Cookies.Add(myCookie)
txtinput.Text= s
end sub
然后,在您的页面的pageload事件上。您可以根据需要设置文本框
sub PageLoad()
Dim cookie As HttpCookie = Request.Cookies.Get("calculatorValue")
if (txtimput.Text == "" && cookie != null && cookie.Value != "")
{
txtinput.Text = cookie.Value;
//Clear out cookie
}
这可能不是100%因为我没有测试但应该非常接近。