C# 值在页面生命周期中发生变化?

C# 值在页面生命周期中发生变化?,c#,asp.net,C#,Asp.net,我正在尝试制作一个简单的网站,将生成2个数字,然后用户将需要回答这些数字中的2个相加的正确结果 这是我的ASPX: <div id="questionContainer"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div id="firstNumber"> <%

我正在尝试制作一个简单的网站,将生成2个数字,然后用户将需要回答这些数字中的2个相加的正确结果

这是我的ASPX:

<div id="questionContainer">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>  
        <div id="firstNumber">
            <%=firstNum %>
        </div>
        <div id="operator">
            <%=operatorString %>
        </div>
        <div id="secondNumber">
           <%=secondNum %>
        </div>
        <div id="answerWrapper">

                    <input type="text" id="answer" name="answer" placeholder="your answer" />

            <asp:Button runat="server" ID="submit" name="submit" OnClick="AnswerQuestion" Text="Answer" />
              <input type="hidden" name="op" id="op" value="1" />
            <div id="error">
                <%=textForUser %>
            </div>
            </ContentTemplate>
            </asp:UpdatePanel>
        </div>

问题是我注意到每次我试图回答文本框中的问题时,数字都会发生变化。。好像我没有回答正确的问题。

问题是您使用的是静态变量。这些请求在所有请求中共享。不要为此目的使用静态变量,而是将它们存储在其他位置(如会话、视图状态、Hiddenfield等)

  • 应用
  • 饼干
  • 表单发布/隐藏表单字段
  • 质询
  • 会议
  • ASP.NET中的新状态容器
  • 缓存
  • 上下文
  • 视图状态
  • Web.config和Machine.config文件

。。。当然还有数据库。

问题是您使用的是静态变量。这些请求在所有请求中共享。不要为此目的使用静态变量,而是将它们存储在其他位置(如会话、视图状态、Hiddenfield等)

  • 应用
  • 饼干
  • 表单发布/隐藏表单字段
  • 质询
  • 会议
  • ASP.NET中的新状态容器
  • 缓存
  • 上下文
  • 视图状态
  • Web.config和Machine.config文件

。。。当然还有数据库。

您在回发时似乎正在重新生成一个新的数字对。基本上,逻辑应该是这样的,如果你打算反复停留在同一页面上,只需发布答案:

1) Is this a postback?
   -> No: Generate a new value and store it in ViewState. Hold onto this value.
   -> Yes: Do we have a stored answer value in ViewState?
         -> No: Error? Something has gone wrong.
         -> Yes: Fetch that Value and hold on to it
2) On Button Click, Is the answer you entered the same as the generated value?
   -> No: Show Error
   -> Yes: Show Success, Then generate a new value and store it in ViewState

您的算法似乎只在回发期间和每次回发时生成新的答案对

你似乎在回发邮件时重新生成一个新的数字对。基本上,逻辑应该是这样的,如果你打算反复停留在同一页面上,只需发布答案:

1) Is this a postback?
   -> No: Generate a new value and store it in ViewState. Hold onto this value.
   -> Yes: Do we have a stored answer value in ViewState?
         -> No: Error? Something has gone wrong.
         -> Yes: Fetch that Value and hold on to it
2) On Button Click, Is the answer you entered the same as the generated value?
   -> No: Show Error
   -> Yes: Show Success, Then generate a new value and store it in ViewState
您的算法似乎只在回发期间和每次回发时生成新的答案对