Я хочу визуализировать PartialView внутри <iframe src=''></iframe> Визуализированное частичное представление имеет собственный код JavaScript и лист CSS. Я пробовал два способа получить эту работу (ни один из них не работал):
1)
<iframe src="http://localhost:54351/Box/19"></iframe>
public PartialViewResult Box(int id)
{
return PartialView(GetBox(id));
}
Результат: обычный текст (строка), листа CSS нет и код JavaScript не работает
====================================
2)
<iframe src="@{ Html.RenderPartial("~/Views/Box.cshtml", @Model); }"></iframe>
Результат: очевидно, что это не работает, внутри iframe ничего не отображается.
В первом решении мне было интересно, возможно ли вернуть объект RazorView (или что-то еще), который будет иметь рабочий код JavaScript и лист CSS. Любые идеи ?
Ответ 1 · рейтинг 9 · James Allen
Я считаю, что вам нужно вернуть полный вид, а не частичный вид. Частичные представления не подбирают макет автоматически (поскольку они предназначены для размещения на существующей странице). Поскольку IFrame полностью независим от родительской страницы, ему потребуется собственная таблица стилей и теги ссылки на сценарий.
public ActionResult Box(int id)
{
return View(GetBox(id));
}
Ответ 2 · рейтинг 6 · Erik Funkenbusch
Я думаю, вы неправильно понимаете как частичные представления, так и фреймы.
iframe отображает всю веб-страницу, а не только ее часть, внутри другой веб-страницы. iframe должен иметь полный URL-адрес, который является страницей, отличной от текущей страницы (если бы это была одна и та же страница, он попытался бы отобразить iframe внутри себя снова и снова, создавая бесконечный цикл).
Что вам нужно сделать, так это указать URL-адрес другого действия, которое возвращает полное представление. Если вы визуализируете частичное представление, тег <head> отсутствует, и, следовательно, нет тегов сценария, обычно связанных с тегом заголовка. без тегов <link>, без заголовков и т.д...