现在我正在做一个非常简单的ASP.NET项目,我遇到了一个我无法理解的问题:由于某种原因,我不知道,我的主页的Page_Load方法在我尝试激活某个部分时触发了两次。IsPostBack
的值第一次为true,第二次为false。我已经搜索并找到了许多关于这个问题的讨论,但没有一个答案帮助我解决了这个问题。
我该怎么做才能解决这个问题,并防止该方法再次触发?
编辑:
嘿,barak的请求是Catalog.aspx:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Catalog.aspx.cs" Inherits="Catalog" Title="Untitled Page" Debug="true" %>
字符串
- ::伊斯坦布尔,伊斯坦布尔,土耳其 *
<asp:DataList ID="DataListPro" runat="server"
RepeatColumns="3" OnItemCommand="DataListPro_ItemCommand">
<ItemTemplate>
<div Class="Catalog"> <asp:HyperLink ID="HyperLinkName" runat="server" NavigateUrl='<%# String.Format("ProDetails.aspx?id={0}",Eval("idProduct")) %>'
Text='<%# Bind("NameProduct") %>' CssClass="CatalogLink" Font-Names="00264d" Font-Overline="False" Font-Underline="False" Font-Bold="True"></asp:HyperLink>
<asp:Label ID="LblIdProduct" runat="server" Text='<%# Bind("idProduct") %>' Font-Bold="True" Visible="False"></asp:Label><br />
<center><asp:Image ID="Image1" runat="server" ImageUrl='<%# Bind("ProductPic") %>' BorderWidth="0px" Height="100px" Width="100px" style="margin: 10px" /><br />
<strong>
רק ב</strong><asp:Label ID="LabelPrice" runat="server" Text='<%# Bind("price") %>' Font-Bold="True" ForeColor="#0099FF"></asp:Label><strong>
ש"ח!</strong> <asp:LinkButton ID="LinkButtonAddToSal" runat="server" Font-Bold="True" CommandName="AddProduct">הוסף מוצר</asp:LinkButton></center>
</div>
</ItemTemplate>
<ItemStyle BackColor="White" BorderColor="White" />
</asp:DataList>
<div class="pages">
<center>
<asp:LinkButton ID="LinkButtonPrevPage" runat="server" CommandName="PrevPage" OnClick="LinkButtonPrevPage_Click">לעמוד הקודם</asp:LinkButton>
אתה נמצא בעמוד:
<asp:Label
ID="LabelPageDetails" runat="server"></asp:Label>
<asp:LinkButton ID="LinkButtonNextPage"
runat="server" CommandName="NextPage" OnClick="LinkButtonNextPage_Click">לעמוד הבא</asp:LinkButton>
</center>
<br />
型
7条答案
按热度按时间8wigbo561#
asp.net页面在某些浏览器中加载两次。我可能值得用多个浏览器重新测试(如果你还没有这样做的话)。
一个原因是图像标签中的空src属性,即
字符串
这个post给出了一个更广泛的讨论-最初指向
td
中的背景属性。在同一篇文章中还有另一个有趣的可能性。的使用
型
与
型
在同一页中,可能也使用
Page_Load
可能会导致相同的问题。给出的解为AutoEventWireup="false"
编辑
看看你的代码,这可能是问题所在
型
如果此值在任意点计算为
型
这可能会导致图像出现
src=""
问题,进而导致双重回发编辑2
唯一能想到的其他方法是在页面绑定后调用
Response.Redirect
(或任何地方)。这肯定会导致页面加载两次。p1tboqfb2#
在我的例子中,我使用了:
字符串
我没有将页面的AutoEventWireUp设置为任何值,所以它默认为true。为了解决这个问题,我显式地将页面的AutoEventWireUp属性设置为false。
ymzxtsji3#
如果你想要一个具体的答案,请发送你的方法。下面是你的页面是如何工作的,也许它会帮助你理解:当你加载一个页面时-首先你的实际页面在页面渲染完成后被调用(他的
page_load
)-你的母版页面被调用(他的page_load
)。任何在runat=server
中设置并调用SQL info/ button/checkboxes的对象-没有设置为-postback=false
-将再次触发页面-并与他一起触发母版页的page_load
。希望这能帮上一点忙。vktxenjb4#
我在VS2013.net4.5中遇到了这种情况。在页面的底部,我注意到:
字符串
它呈现以下内容:
型
从我所读到的,一个空的@src会导致这个。
我只是删除它,因为我加载jquery需要。
cunj1qz15#
我可以通过将母版页上的autoEventWireUp属性设置为True并在MasterPage CodeBehind中使用Sub Page_Load()来解决这个问题,而不是Sub Page_Load()来处理Me.Load。
当我有这个
字符串
我的密码背后有
型
页面将显示HelloHello(代码运行两次)
新编码
型
代码隐藏
型
页面现在显示Hello
vq8itlhq6#
我有一个遗留项目,使用WebForms与MasterPages和这一个让我挠头,直到一个灯泡出现在我的头上,我意识到了原因,所以把这个答案在这里的任何人谁需要它!
我的MasterPage Load / init事件被多次调用,我不知道为什么,直到我将调用堆栈扩展到所有代码(不仅仅是我的代码),它指向通过pagetnotfound.aspx的请求
此网站上的Pagenotfound.aspx使用母版页。。
这可能是修复空的src属性修复这个问题的原因-如果浏览器将其视为404,您的404页面将被调用,您的母版页也将被调用。
希望这对你有帮助。
brtdzjyr7#
任何方式-你的问题是你有DATABIND,在那里事件被调用-它使用“绑定”,在他的回合-完成绑定后-重新加载页面(和它的母版页面-所以你得到那些page_load两次)。对你来说,最好的解决方案是把你所有的相关函数/声明放在:
字符串
现在当你的主程序被加载时-它会跳过已经加载的代码的每一部分。如果你有进一步的问题请通知我。