2011-11-04 76 views
2

我想弄清楚我的架構是否有問題,或者我只是需要快速修復。使用Request.Files並從POST更改爲GET而無需重新加載頁面?

我有我的網頁上執行以下操作:

<div ID="UploadDashboardDecorationZone"> 
    <fieldset id="UploadDashboard"> 
     <legend>Upload Dashboard</legend> 
     <telerik:RadUpload ID="UploadDashboardSelector" Runat="server" Width="235px" AllowedFileExtensions=".xml" MaxFileInputsCount="1" ControlObjectsVisibility="None" /> 
    </fieldset>   
    <div class="BottomButton"> 
     <telerik:RadButton ID="SubmitUploadDashboardButton" Runat="Server" Text="Upload" OnClientClicked="CloseUploadDashboard" /> 
    </div> 
</div> 

用戶選擇他們希望上傳文件,然後他們按SubmitUploadDashboardButton。

然後我有以下服務器端代碼:

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (Request.Files.Count > 0) HandleUploadedFile(); 
} 

這一切的偉大工程。上傳的文件被回覆,我看到我的網頁上的變化。唯一的問題是我已經將我的頁面的請求HTTP方法作爲POST而不是GET。這意味着如果用戶刷新頁面,會發生不好的事情。

以前,我曾用下面的代碼片段來解決這個問題:

Page.Response.Redirect(Page.Request.Url.ToString(), true); 

不幸的是,這並沒有爲我工作了。我不希望重新加載頁面時發生閃爍(除了重新加載時出現的一些代碼問題)。

我在這裏有什麼其他的選擇?如果我使用UpdatePanel換行UploadDashboardDecorationZone,那麼Request.Files會變爲0.

是否有快速代碼修復,這是常見的?或者我在理解文件上傳過程的工作原理時會錯過更深層次的東西?

謝謝。

+0

使用DevExpress,我曾經閱讀過他們提供的一種上傳方法,該方法將POST發送到隱藏的IFRAME,因此在刷新主頁面方面是「透明的」。也許你可以用這種方式配置你的Telerik控制器? –

+0

我將不得不閱讀一下這個方法。感謝您的建議! :) –

+0

在最近的一個項目中,我成功地使用了HTML 5 File API,它通過XmlHttpRequest對象(aka AJAX)上傳文件,該對象也沒有完整的POST頁面)。不過,需要現代瀏覽器。 –

回答

1

我不知道在頁面更改時避開「閃光燈」的方法,除非您使用Ajax進行呼叫,而不需要頁面重新加載。

+1

我確定使用按鈕中的閃光如果我打電話給Page.Response.Redirect,對第二次閃光我不太確定,對不起,我很抱歉。 –

相關問題