为什么控件不按预期在回发上运行?

时间:2014-11-15 21:52:10

标签: asp.net .net vb.net postback

如果之前有人询问或者我没有正确询问,请原谅我。我是编程和从事学校作业的新手。

分配:创建一个包含2个文本框和按钮控件的Web应用程序项目 a)在更改字段1中的文本时,字段2中的文本应为空白。 b)按下按钮时,字段1中的文本应放在字段2中 c)所有事件都应该在服务器端处理,所以没有javascript。 (与老师确认,没有JAVASCRIPT)

问题在于:

页面加载两个空白文本框。我在textbox1中输入文本,按ok,页面重新加载但textbox2中没有任何内容(它应该复制textbox1的内容)。如果我再次按下提交按钮,文本将按原样复制到文本框2。

如果我更改textbox1中的文本,请保留焦点,页面重新加载和空白框2。如果我按下提交按钮,它会按原样复制文本。

第一次加载页面时,我无法让它正常工作。

以下是default.aspx的代码:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body style="height: 141px">
    <form id="form1" runat="server">
    <div>

    </div>
        <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <p>
            <asp:Button ID="Button1" runat="server" Text="Submit" />
        </p>
    </form>
</body>
</html>

以下是default.aspx.vb的代码:

Partial Class _Default
    Inherits System.Web.UI.Page


    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        TextBox2.Text = TextBox1.Text

    End Sub

    Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        TextBox2.Text = ""

    End Sub


End Class

我知道当我第一次在textbox1中输入文本时它正在触发textchanged事件,但它似乎发生在我需要的错误顺序中。

我做得不对?

如果您需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

一般来说,说&#34; NO JS&#34;是不正确的。因为Postback是JS调用的事件。由于没有JS,因此您无法通过键入文本框来导致Postback。当Asp.Net确定TB的内容发生了变化时,TextChange事件发生在回发上。 因此,如果您想使用回发键入,则需要最少的JS作为described here

您需要从AutoPostBack中移除TextBox1,因为当焦点从文本框移动时会导致回发。这就是问题。您的按钮从未在第一次通过时被按下,因此您的TextBox2.Text = TextBox1.Text从未在第一次运行。第二次按下按钮,代码就可以了。