12

Вопрос по updatepanel, httpresponse, response.write, asp.net – Response.Write и UpdatePanel

Я создаю vcard, который отправляю клиенту, используя следующий фрагмент кода:

Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileNameOnly));
Response.ContentType = "text/x-vcard";
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");
Response.Write(vCard.ToString());
Response.End();

Тем не менее, мне нужно использовать vCards на странице, которая имеет элемент управления внутри и UpdatePanel. К сожалению, согласноПанель обновления и ответная запись  это не работает и вызывает ошибку. Мне интересно, каковы некоторые альтернативные способы отправки содержимого vcard / файла в браузер клиента, чтобы он отображал «открыть / сохранить»? диалог, который не включает Response.Write?

  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Только если вы сделаете панель обновления, чтобы отменить обновление ajax и сделать полный пост дыры страницы. Другой способ - использовать обработчик для отправки вашей x-vcard, и это лучше во всех случаях.

    от Aristos
  • 1

    Response.Write не будет работать при асинхронных событиях, Мое предложение состоит в том, чтобы удалить панель обновления, если она специально используется только с точки зрения VCard.

    Альтернативно. Поместите элемент управления на панель обновлений и инициализируйте его значение в асинхронном событии. Теперь это будет работать.

  • 1

    У меня была похожая проблема с

    Response.Write, Я нашел обходной путь или, возможно, даже решение этой проблемы. ЗахватитьTextWriter даноRenderBeginTag управления сервером и напиши в него.

    Я написал в блоге с примером здесь:http://timscyclingblog.wordpress.com/2013/03/07/asp-net-web-forms-response-write-in-an-updatepanel-dev-web/

  • 1

    Почему вы не рассматриваете возможность использования отдельного обраб

    отчика / страницы для обслуживания vcard?

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

  • 35

    Вы не можете использовать

    Response.Write во время асинхронной обратной передачи. Какой бы элемент управления ни выполнялся, этот код должен быть добавлен какPostBackTrigger в панели обновления:

    <Triggers>        
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>
    

    Вы также можете сделать это в коде, если вы предпочитаете:

    ScriptManager.GetCurrent().RegisterPostBackControl(Button1);