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

时间:2017-08-10 19:38:16

标签: c# asp.net iframe postback

我正在构建一个包含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));

...其中&#34;文件&#34;是我给PostFiles集合中包含的单个HttpPostedFile对象的名称,该对象包含在“文件上载”控件中。 &#34;路径&#34;是文件应保存到的文件夹路径,&#34; name&#34;是保存文件的名称。

那么:是否有另一种方法可以对这个特定的函数进行编码,使FileUploader的活动与其自己的页面保持隔离,应该如此?因为我甚至试图保持父页面不使用Javascript刷新,并且没有任何工作。

编辑2:问题现在已经解决,但我仍然有问题。在尝试了多个替代方案(Ajax Tool Kit等)但没有成功之后,我在Visual Studio 2017中打开了我的项目副本 - 我之前在VS2015中构建了它 - 并在调试器中将其旋转。血腥文件上传器第一次工作。没有不必要的回发,没有麻烦。

所以看起来问题出在我的开发软件上,尽管我无法想象究竟出了什么问题。但解决的问题已经解决了。

1 个答案:

答案 0 :(得分:0)

在您的web.config中尝试

<configuration>
    <system.web>
        <xhtmlConformance mode="Legacy" />
    </system.web>
</configuration>