我正在将应用程序从ASP.NET 2移植到ASP.NET 4.5
我有一个页面可以创建一个弹出窗口(另一个.aspx页面以javascript modalWin函数启动)。
当弹出窗口被解除时(使用window.close()):
这是一个问题,因为它会抛弃父页面上的所有数据。
如何确定导致父页面刷新的原因?
这对我来说很难调试,因为我不知道在哪里设置一个断点来逐步通过代码来弄清楚它在做什么。当我在onload =函数中设置断点时,它只会报告启动javascript的页面的调用堆栈。
我是视觉工作室的新手,所以请使用我在屏幕上看到的术语和说明。
父页面调用弹出页面如下:
<button id="bbb" onclick="button_onclick(this)">Button</button>
javascript看起来像这样:
function button_onclick(element) {
modalWin("popup.aspx", 300, 300);
}
当用户点击弹出页面上的保存按钮时,此javascript会运行:
function closeit() {
window.returnValue = true;
window.close();
}
我已经挖掘了代码的更改历史记录,之前<button>
按钮是图像按钮,但调用的javascript没有更改。
答案 0 :(得分:1)
“之前按钮是图像按钮”。你似乎几乎提到了这一点,但这是你的线索。具有客户端点击事件的图像不会导致回发,因为图像永远不会这样做。默认情况下,<button>
元素会导致回发,因为其默认type
为submit
。您需要将其更改为button
以阻止它。
<button type="button" id="bbb" onclick="button_onclick(this)">Button</button>
这是至关重要的变化,与网络的工作方式有关,而与ASP.NET无关。 .NET Framework的变化是一个红色的鲱鱼。问题不会发生,因为您更改了框架,这是因为您更改了代码