ASP. NET Страница Core Razor: записывать содержимое html в новую вкладку браузера? - PullRequest
0 голосов
/ 06 августа 2020

Используя HttpClient, я делаю запрос GET, который возвращает ответ html.

Запрос URL-адреса в обработчике метода:

var response = string.Empty;
var result = await _httpClient.CreateClient().GetAsync(newUrl);
if (result.IsSuccessStatusCode)
{
  response = await result.Content.ReadAsStringAsync();
  var bytesResponse = Encoding.ASCII.GetBytes(response)

  // How to open bytesResponse in a new browser tab?

}

Html содержимое ответа из запроса :

<!DOCTYPE html>
<html lang="en">
  <head>
    <style>
    </style>
  </head>
  <body>

      <!-- body content -->

    <script>
    </script>
  </body>
</html>

Попытка добавить await Response.Body.WriteAsync(bytesResponse, 0, bytesResponse.Length); вызовет исключение System.ObjectDisposedException: IFeatureCollection has been disposed.

Буду признателен за помощь в отображении ответа на новой вкладке браузера.

1 Ответ

0 голосов
/ 07 августа 2020

Во-первых, если вы хотите открыть новый тег браузера, это нельзя сделать в обработчике бритвы. Это нужно сделать в поле зрения. Вам нужно украсить свою ссылку атрибутом «_blank» следующим образом:

<a asp-page-handler="xxxxx" target="_blank">link</a>

Вот демонстрация работала:

test.cs html:

<a asp-page-handler="Html" target="_blank">link</a>

test.cs html .cs:

public IActionResult OnGet()
        {
            return Page();
        }
public ActionResult OnGetHtml()
        {
            return base.Content("<div>Hello</div>", "text/html");
        }

результат: введите описание изображения здесь

...