簡體   English   中英

防止 iframe 中的頁面回發導致主頁回發 asp.net C#

[英]Prevent postback of page in iframe from causing main page postback asp.net C#

我正在構建一個應用程序,該應用程序具有包含在 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));

...其中“文件”是我為 PostedFiles 集合中包含的單個 HttpPostedFile 對象指定的名稱,該集合包含在 File Upload 控件中。 “Path”是保存文件的文件夾路徑,“name”是保存文件的名稱。

那么:是否有另一種方法來編碼這個特定的函數,使 FileUploader 的活動與它自己的頁面隔離,因為它應該是? 因為我什至試圖阻止使用 Javascript 刷新父頁面,但沒有任何效果。

編輯 2:問題現已解決,但我仍有疑問。 在嘗試了多種替代方案(Ajax 工具包等)但沒有成功后,我在 Visual Studio 2017 中打開了我的項目副本——我之前一直在 VS2015 中構建它——並在調試器中啟動它。 血腥的文件上傳器第一次工作。 沒有不需要的回發,沒有麻煩。

所以看起來問題出在我的開發軟件上,盡管我無法想象到底出了什么問題。 但解決的問題就是解決的問題。

在您的 web.config 中嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM