ASP.NET MVC 3 RenderPartial/Razor и iframe

Я хочу визуализировать 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. Любые идеи ?


person Tony    schedule 15.04.2011    source источник


Ответы (2)


Я считаю, что вам нужно вернуть полный вид, а не частичный вид. Частичные представления не подбирают макет автоматически (поскольку они предназначены для размещения на существующей странице). Поскольку IFrame полностью независим от родительской страницы, ему потребуется собственная таблица стилей и теги ссылки на сценарий.

    public ActionResult Box(int id)
    {
        return View(GetBox(id));
    }
person James Allen    schedule 15.04.2011

Я думаю, вы неправильно понимаете как частичные представления, так и фреймы.

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

Что вам нужно сделать, так это указать URL-адрес другого действия, которое возвращает полное представление. Если вы визуализируете частичное представление, тег <head> отсутствует, и, следовательно, нет тегов сценария, обычно связанных с тегом заголовка. без тегов <link>, без заголовков и т.д...

person Erik Funkenbusch    schedule 15.04.2011