在 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; }
}
}
我是 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; }
}
}