在 ASP.NET 中重新加载时的页面显示

page display when reloading in ASP.NET

我是 ASP.NET 的新手,所以我的问题可能有点愚蠢。假设我们有一个带有两个按钮和一个 gridview 的网络表单,这里是一些代码

protected void button1_Click(object sender, EventArgs e)
{
   ...retrieve data from database and bind Dataset to gridview.
}

protected void button2_Click(object sender, EventArgs e)
{
   // do nothing
} 

因此,当我单击 button1 时,它会显示带有数据的 gridview,很公平,这就是它应该的样子。但是当我单击 button2 时它仍然显示带有数据的 gridview,据我所知,当我单击 button2 时,有一个新的回发请求重新加载并发回新页面,因为 button2 什么都不做,所以不应该任何与 gridview 绑定的东西,所以页面应该什么都不显示?但它仍然显示带有数据的 gridview...

这里有一个简单的例子来说明 VDWWD 指出的内容。

创建一个新的网络表单。复制粘贴下面的代码。 点击 gridview 加载的第一个按钮,点击第二个按钮你会得到一个回传,但 gridview 仍然存在。

现在进入 aspx 页面并将 EnableViewState="true" 更改为 EnableViewState="false" 并且这次再次 运行 当您单击第二个按钮时,gridview 数据不会保留.

webform1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" EnableViewState="true" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server"></asp:GridView>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />

    </div>
    </form>
</body>
</html>

webform1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication3
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            TestObject test1 = new TestObject()
            {
                firstName = "Fred",
                lastName = "Smith",
                phone = "334-456-7698"
            };
            TestObject test2 = new TestObject()
            {
                firstName = "Mary",
                lastName = "Jones",
                phone = "344-556-7558"
            };
            List<TestObject> list = new List<TestObject>();
            list.Add(test1);
            list.Add(test2);

            GridView1.DataSource = list;
            GridView1.DataBind();

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            //do nothing
        }
    }

    internal class TestObject
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string phone { get; set; }
    }
}