如果之前有人询问或者我没有正确询问,请原谅我。我是编程和从事学校作业的新手。
分配:创建一个包含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事件,但它似乎发生在我需要的错误顺序中。
我做得不对?
如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
一般来说,说&#34; NO JS&#34;是不正确的。因为Postback
是JS调用的事件。由于没有JS,因此您无法通过键入文本框来导致Postback
。当Asp.Net确定TB的内容发生了变化时,TextChange
事件发生在回发上。
因此,如果您想使用回发键入,则需要最少的JS作为described here
您需要从AutoPostBack
中移除TextBox1
,因为当焦点从文本框移动时会导致回发。这就是问题。您的按钮从未在第一次通过时被按下,因此您的TextBox2.Text = TextBox1.Text
从未在第一次运行。第二次按下按钮,代码就可以了。