Работа с Request.Files и переход с POST на GET без перезагрузки страницы? - PullRequest
2 голосов
/ 05 ноября 2011

Я пытаюсь выяснить, если у меня что-то не так с моей архитектурой или мне просто нужно быстрое исправление.

У меня на странице есть следующее:

<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);

К сожалению, это не работаетдля меня больше.Я не хочу перепрошивки, которая происходит при перезагрузке страницы (в дополнение к некоторым проблемам с кодом, которые возникают при перезагрузке).

Какие у меня есть другие варианты здесь?Если я обертываю UploadDashboardDecorationZone с помощью UpdatePanel, тогда Request.Files будет иметь значение 0.

Существует ли быстрое исправление кода, которое является распространенным явлением?Или я упускаю что-то более глубокое в моем понимании того, как работает процесс загрузки файлов?

Спасибо.

1 Ответ

1 голос
/ 05 ноября 2011

Я не знаю, как обойти «флеш», когда страница меняется, если вы не делаете свои звонки, используя Ajax, который вообще не требует перезагрузки страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...