【问题标题】:some issue regarding page refresh关于页面刷新的一些问题
【发布时间】:2013-12-04 04:00:02
【问题描述】:

我在 asp.net 中制作了一个示例网站。在页面加载和按钮单击时,我调用了显示在 lbldispnum 上的 RandomNumber 函数。

现在我已将随机数存储在会话中,并在页面刷新时标签 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>
    &nbsp;</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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我想我在关注你。 听起来您想加载页面,查看随机数,然后重新加载页面并查看相同的随机数。如果是这种情况,我认为以下方法会起作用。

    在 Page_Load() 函数中,您需要将 Session("RandNumber") 值设置为您在文本框中设置的值。应该这样做:

    lbldispnum.Text = RandomNumber(8000, 10000)
    Session("RandNumber") = lbldispnum.Text
    

    我是 C# 人,如有 VB 语法错误请见谅。

    在检查回发的 if 语句中执行此操作。同样在此 if 添加检查以查看 Session("RandNumber") 变量是否包含值。如果它确实包含一个值,请使用它,否则执行您正在执行的操作并使用新的随机值填充该字段。提交函数在 Page_Load() 之后执行,因此如果我正确读取它,它应该处理用新值覆盖文本框。

    我没有尝试弄清楚您对 CheckRefresh 变量的使用情况,但我很确定如果您正确实施解决方案,则不需要它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 2011-05-13
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多