页面OnLoad不会触发更改查询字符串

时间:2010-12-02 08:17:40

标签: asp.net .net-4.0 page-lifecycle

我遇到一个问题,当我导航到一个页面并只更改查询字符串时,OnLoad事件没有激活。如果我做回发它被调用,然后更改查询字符串更多OnLoad被调用。

这是我的尝试方式。我导航到OnLoad fires页面 - >然后更改查询字符串页面更新(所有绑定元素更新)OnLoad不会触发 - >我使用按钮OnLoad fires做回发 - >然后更改查询字符串OnLoad触发。

我将尝试更详细地解释。

我登录时系统有登录窗口我导航到另一个发送两个查询字符串消息的aspx页面,最后一个查询字符串是一个数字(page.aspx?key = text82& key2 = 2010)。当我第一次调用PageLoad事件进入页面并且一切正常时,如果我在浏览器中将key2更改为2011并按Enter键,则不会调用PageLoad但是我的所有绑定元素都会更新(GrivView等...) 。如果我然后使用按钮进行回发,则会调用PageLoad。如果我现在将2011年更改回2010并按Enter键,则调用PageLoad。

我尝试这是firefox,每次都会调用PageLoad。

我厌倦了写一个测试网站,但我没有得到同样的问题,但我发现在IE 8中将查询字符串更改为相同的数字并按下输入不调用PageLoad。但是在firefox中这样做会使回发发生火灾。这是测试代码

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"     AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
    Welcome to ASP.NET!
</h2>
<p>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default2.aspx?t=tt&   tttttt=2010">HyperLink</asp:HyperLink>
</p>
<p>
    You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
        title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
</p>
</asp:Content>

导航到

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.master" CodeFile="Default2.aspx.cs"
Inherits="Default2" %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Button ID="Button1"
    runat="server" Text="Button" />
</asp:Content>

OnLoad事件Default2.aspx

protected void Page_Load(object sender, EventArgs e)
{
    Label1.Text += "Called " + DateTime.Now.ToString();
}

1 个答案:

答案 0 :(得分:0)

我发现了问题。看起来浏览器缓存给了我这个问题。按F12并清除缓存,它可以工作。