为什么在表单提交期间验证两个随机数不起作用

Why is validating two random numbers during submission in a form not working

我有以下代码隐藏:

Random rndNum;
int inFirstOne, inSecondOne;
protected void Page_Load(object sender, EventArgs e)
{
    rndNum = new Random();

    int inFirst = rndNum.Next(1, 51);
    int inSecond = rndNum.Next(50, 101);

    lblFirst.Text = inFirst.ToString();
    inFirstOne = inFirst;

    lblSecond.Text = inSecond.ToString();
    inSecondOne = inSecond;
}
public void ValidateForm(object sender, EventArgs e)
{
    string strNum = tbValidation.Text;
    int inCalc = inFirstOne + inSecondOne;
    if (inCalc.ToString() == strNum)
    {
        lblIsValid.Text = "Correct";
    }
    else
    {
        lblIsValid.Text = "Please enter the correct result";
        lblIsValid.ForeColor = Color.DarkRed;
    }
}

ASP.net代码:

...
<tr>
    <td><h2>What is <asp:Label ID="lblFirst" Text="" CssClass="numGen" ClientIDMode="Static" runat="server" /> + <asp:Label ID="lblSecond" Text="" CssClass="numGen" ClientIDMode="Static" runat="server" />?</h2></td>
    <td><asp:TextBox ID="tbValidation" ClientIDMode="Static" CssClass="tbTech" runat="server"></asp:TextBox> <asp:Label ID="lblIsValid" runat="server" /></td>
</tr>
<tr>
    <td colspan="2" class="setRight">
        <asp:Button ID="SubmitForm" ClientIDMode="Static" runat="server" Text="Submit" OnClick="ValidateForm" CssClass="btn" UseSubmitBehavior="false" />
    </td>
</tr>
...

我总是看到 Please enter the correct result 消息。

我如何修改以确保在输入结果时它可以从代码隐藏中验证计算。

不清楚你是如何填写的 tbValidation 但在任何情况下除非你执行你的 page_load 逻辑只有当请求不是回发时,变量 inFirstOneinSecondOne将在单击按钮时被覆盖。

看来你需要这个

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostback)
    {
        // do this only if it's the first request
        rndNum = new Random();

        int inFirst = rndNum.Next(1, 51);
        int inSecond = rndNum.Next(50, 101);

        lblFirst.Text = inFirst.ToString();
        inFirstOne = inFirst;

        lblSecond.Text = inSecond.ToString();
        inSecondOne = inSecond
    }
}

int inCalc = Convert.ToInt32(lblFirst.Text) + Convert.ToInt32(lblSecond.Text); 有效。