我在asp.net上建了一个样本网站。在页面加载和按钮单击时,我调用了RandomNumber函数,该函数显示在lbldispnum上。
现在我已经在会话中存储了随机数,并在页面刷新标签lblsipnum显示随机数和我想要的。
这可以在多个帖子之后发挥作用。 不是当我们运行网站然后点击页面刷新时,控件进入循环不是回发并显示新的随机数,如何避免这种情况或绕过此ifloop页面刷新 请帮我找出这个问题的解决方案我已经提到了下面的aspx代码和vb代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<p>
<asp:Label ID="lbldispnum" runat="server" BorderColor="Black"
BorderStyle="Solid" BorderWidth="1px"
style="z-index: 1; left: 295px; top: 101px; position: absolute; width: 339px; height: 28px"></asp:Label>
</p>
<p>
</p>
<p>
<asp:Button ID="btnsubmit" runat="server"
style="z-index: 1; top: 192px; position: absolute; left: 378px; height: 26px; width: 104px"
Text="Submit" />
</p>
</form>
</body>
</html>
Partial Class RereshTest
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Session("CheckRefresh") = Server.UrlDecode(System.DateTime.Now.ToString())
lbldispnum.Text = RandomNumber(8000, 10000)
End If
End Sub
Private Function RandomNumber(ByVal min As Integer, ByVal max As Integer) As Integer
Dim random As New Random()
Return random.[Next](min, max)
End Function
Protected Sub btnsubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsubmit.Click
If Session("CheckRefresh").ToString() = ViewState("CheckRefresh").ToString() Then
lbldispnum.Text = RandomNumber(8000, 10000)
Session("RandNumber") = lbldispnum.Text
Session("CheckRefresh") = Server.UrlDecode(System.DateTime.Now.ToString())
Else
lbldispnum.Text = Session("RandNumber")
End If
End Sub
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
ViewState("CheckRefresh") = Session("CheckRefresh")
End Sub
End Class
答案 0 :(得分:0)
我想我正在关注你。 听起来您想要加载页面,查看随机数,然后重新加载页面并查看相同的随机数。如果是这种情况,我认为以下内容可行。
在Page_Load()函数中,您需要将Session(“RandNumber”)值设置为您在文本框中设置的值。这样的事情应该做:
lbldispnum.Text = RandomNumber(8000, 10000)
Session("RandNumber") = lbldispnum.Text
我是C#人,如果有VB语法错误,请原谅我。
在检查回发的if语句中执行此操作。此外,如果添加一个检查以查看Session(“RandNumber”)变量是否包含值。如果它确实包含值,请使用它,否则执行您正在执行的操作并使用新的随机值填充该字段。提交函数在Page_Load()之后执行,因此如果我正确读取它,它应该使用新值覆盖文本框。
我没有尝试弄清楚你对CheckRefresh变量的使用,但我很确定如果你正确实现解决方案就不需要它。