在Default.aspx中,我有以下代码,
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
Place 1
<form id="form1" runat="server">
Place 2
<br />
<div>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>
</form>
</body>
</html>
我在页面上放了一个按钮,上面写着“我被点击了!”。
代码隐藏:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Text = "Button";
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("I am clicked!");
}
}
当我构建时,页面视图如下所示:
Place 1
Place 2
Button
当我点击按钮时,“我被点击了!”出现在地方1之前。
结果是:
I am clicked! Place 1
Place 2
Button
为什么它出现在“Place 1”之前? 你有什么想法吗?
答案 0 :(得分:5)
因为您直接在回复中写作。如果要将文本放在页面上的特定位置,请在页面上放置一个asp:label控件,并在Button1_Click中设置标签控件的Text属性
答案 1 :(得分:3)
答案 2 :(得分:2)
因为控制事件是在页面PreRender
事件之前处理的。因此,所有页面内容都将在控件事件处理程序中手动输出后呈现。
基本上你不应该使用Response.Write()
这样做,只需:
button.Text ="I am clicked!";
MSDN - ASP.NET Page Life Cycle
控制事件 使用这些事件来处理特定的控件事件,例如Button 控件的Click事件或TextBox控件的TextChanged事件。