最近我意识到asp.net中存在一个问题,这对我来说有点奇怪。
我收到了sample.aspx
个文件:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="sample.aspx.vb" Inherits="SampleProj.sample" MasterPageFile="~/Site.Master" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<input type="image" id="Accept" runat="server" class="accept-btn" src="/Images/accept.png" />
</asp:Content>
相关的代码隐藏文件sample.aspx.vb
:
Public Class sample
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Some code here
End Sub
Private Sub Accept_ServerClick(sender As Object, e As ImageClickEventArgs) Handles Accept.ServerClick
'Some code here
End Sub
所以我的问题很容易解释:单击“接受”按钮后,Accept.ServerClick
事件会按预期触发,但出于某种原因(即使页面未重新加载),Page.Load
事件也会被触发。这是我的第一个asp项目,也许这是预期的行为,但我既没有解释也没有找到禁用它的方法。任何信息都将不胜感激。
问候,Ohemgi
(如果你发现任何错误,这是由编写这个简短的样本引起的。我的代码编译运行没有问题,所以我的问题只是关于load事件)
答案 0 :(得分:2)
这很好。来自 MSDN 文档:
在回发页面后,会引发页面的初始化事件(Page_Init和Page_Load),然后处理控件事件。
如果您在Page_Load中执行了每次单击按钮时不想执行的操作,只需将其包装在此条件下:
if (!Page.IsPostBack)
{
// Some code here. It is executed only once.
}
您可以在以下链接中找到更多信息:
答案 1 :(得分:1)
VB.Net版
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' Some code here. It is executed only once.
End If
End Sub