繁体   English   中英

ASP经典代码不断刷新

[英]ASP classic code keeps reloading

我有一个ASP.NET网站,其中包含一些运行经典ASP代码的aspx页面。 下面的查询用经典的ASP代码编写,它使用App_Code文件(dbConn)运行查询。

<%
SQL1 = "INSERT INTO table (field1, field2, field3) VALUES ('" & value1 & "', '" & value2 &    "', '" & value3 & "')"
dbConn.ExecuteCommand(SQL1)
%>

我面临的问题是,具有查询的文件(假设它为“ query.aspx”)会不断调用该查询,并无限次地用相同的条目填充数据库,即使页面“ query.aspx”仅被调用一次。另一个文件为

<!-- #include file="inc/query.aspx" -->

我的问题是,即使整个项目中只包含一次页面,为什么页面仍不断重复执行查询? 即使没有多次包含“ query.aspx”页面,它也会被多次调用吗?

首先要了解的是* .aspx页面是ASP.Net,而不是经典的ASP。

掌握了这些信息之后,我们还需要了解有关ASP.Net如何处理页面的一些知识 如果您使用的是Web表单,则ASP.Net会做很多工作来向您隐藏HTTP请求/响应模型。 取而代之的是,您看到一个试图使网页看起来像Windows窗体的模型:您获得一个窗体实例,可以从中添加和删除控件。

除了那不是很正确。 您实际上并没有获得表单实例。 您只会得到一个Form 类型 ASP.Net不会完全隐藏请求/响应模型。 页面上的每个请求都使用与上一个请求不同的表单实例,即使在同一用户和会话中也是如此。 您处理的每个控件事件都会产生一个新请求,并且每次发生此事件时,ASP.Net运行时都必须从头开始重建整个页面实例。

这意味着一个用户查看一个ASP.Net页面将导致该页面的代码在与该页面交互时多次运行。 如果该页面上有一个<!-- #include指令,则该指令将针对每个控制事件重新执行。

要解决此问题,请首先使用支持独立于sql命令字符串发送查询参数数据的数据库类替换Query.aspx文件。 然后将这样的代码放入* .aspx页面中,以使用该新类:

Sub Page_Load
    If Not IsPostBack
        ' Call the database code from here
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM