防止iframe中的页面回发导致主页回发asp.net C#

问题描述 投票:2回答:1

我正在构建一个应用程序,其中包含iframe中包含的文件上传器。上传器使用第二个按钮触发实际的上传事件。上传事件有效,但是当我单击“上传”按钮时,它会导致包含iframe的页面也在其中刷新,其中显示了我的上传器。上传器和令人讨厌的上传按钮都包含在iframe中显示的页面中,而iframe本身以这种方式包含在我的主页中:

<iframe id="uploaderFrame" src="FileUploader.aspx"></iframe>

我曾尝试将iframe包装在UpdatePanel中,并将ChildrenAsTriggers设置为True,但是问题仍然存在。我的上传器页面和主页都在同一应用程序中。

奇怪的是,仅当用户选择了要上传的文件时,才会发生这种情况。如果单击“上传”按钮,但没有在上传器中发布文件,则主页不会回传。

要清楚:我在iframe中执行回发的页面的问题为零。这正是应该发生的情况。这是包含iframe进行回发的页面。我该如何阻止?

编辑:经过进一步的努力,我确定问题出在那一刻,即发布到FileUpload控件的文件实际保存到服务器的那一刻。我发现,如果我注释掉实际发生这种情况的代码行,则单击“上载”按钮时父页面不会刷新。

冒犯的行看起来像这样:

file.SaveAs(System.IO.Path.Combine(Server.MapPath(path), name));

......,其中“文件”是我给发布文件集合中包含的单个HttpPostedFile对象指定的名称,该文件包含在文件上载控件中。 “路径”是文件应保存到的文件夹路径,“名称”是文件保存的名称。

所以:还有另一种方法来编码此特定函数,该方法将FileUploader的活动保持在应有的独立状态吗?因为我什至尝试使用Javascript阻止父页面刷新,但仍无济于事。

编辑2:该问题现在已解决,但我仍然有疑问。在尝试了多种替代方法(Ajax工具套件等)均未成功后,我在Visual Studio 2017中打开了我的项目的副本-我之前在VS2015中进行了构建-并在调试器中进行了调试。流血的文件上传器是第一次工作。没有多余的回发,没有麻烦。

所以看来问题出在我的开发软件上,尽管我无法想象到底出了什么问题。但是解决的问题就是解决的问题。

c# asp.net iframe postback
1个回答
0
投票

尝试在您的web.config中尝试

<configuration>
    <system.web>
        <xhtmlConformance mode="Legacy" />
    </system.web>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.