一个asp.net页面结构问题

时间:2011-09-26 13:47:40

标签: c# .net asp.net

在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”之前? 你有什么想法吗?

3 个答案:

答案 0 :(得分:5)

因为您直接在回复中写作。如果要将文本放在页面上的特定位置,请在页面上放置一个asp:label控件,并在Button1_Click中设置标签控件的Text属性

答案 1 :(得分:3)

这是预期的 - 看看Page-Live-Cycle

请注意渲染回发事件处理

Normaly你没有使用Response.Write把一个控件或asp-tag输出到ASP.net中

答案 2 :(得分:2)

因为控制事件是在页面PreRender事件之前处理的。因此,所有页面内容都将在控件事件处理程序中手动输出后呈现。

基本上你不应该使用Response.Write()这样做,只需:

button.Text ="I am clicked!"; 

MSDN - ASP.NET Page Life Cycle

  

控制事件   使用这些事件来处理特定的控件事件,例如Button   控件的Click事件或TextBox控件的TextChanged事件。

enter image description here