Потеря обратной навигации в ASP.NET - PullRequest
2 голосов
/ 24 августа 2009

У меня есть веб-страница ASP.NET2.0 с кнопкой «Отправить». Когда пользователь щелкает, я генерирую XML-файл на лету и возвращаю его в результате.

Вот код:

protected void submitBtn_Click(object sender, EventArgs e)
    {
        string result = this.ProduceMyXmlResult();

        this.Response.Clear();
        this.Response.StatusCode = 200;
        this.Response.ContentType = "application/xml";
        this.Response.ContentEncoding = System.Text.Encoding.UTF8;
        this.Response.Write(result);
        this.Response.End();
    }

Кусок кода делает именно то, что я хочу. Однако браузер не распознает файл XML как новую страницу, поэтому кнопка НАЗАД не возвращает меня на исходную страницу. Почему и как я могу это преодолеть?

1 Ответ

4 голосов
/ 24 августа 2009

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

Причина отсутствия обратной навигации в том, что браузер не знает, что страница изменилась. Поскольку кнопка «Отправить» выполняет предварительную обратную передачу, а вы возвращаете данные XML в качестве ответа на эту обратную передачу, браузер выглядит так, как будто это всего лишь преобразование текущей страницы (как если бы вы, скажем, изменили текст элемента управления Label).

«Правильный» способ сделать это - использовать какой-то тип обработчика HTTP, но у меня нет опыта, чтобы предложить правильный способ сделать это, и у вас уже есть работающий код C # для этого метода. *

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