ASP.NET MVC 3 RenderPartial / Razor和iframe

3

我想在<iframe src=''></iframe>中呈现一个PartialView。渲染的PartialView有自己的JavaScript代码和CSS样式表。我尝试了两种方法来实现这个目标(但都没有成功):

1)
    <iframe src="http://localhost:54351/Box/19"></iframe>

    public PartialViewResult Box(int id)
    {
        return PartialView(GetBox(id));
    }

Result: the plain text (string), there is no the CSS sheet and the JavaScript code doesn't work

====================================

2)

    <iframe src="@{ Html.RenderPartial("~/Views/Box.cshtml", @Model); }"></iframe>

Result: Obviously it's doesnt work, nothing shows inside the iframe

在第一种解决方案中,我想知道是否可能返回一个RazorView对象(或类似的东西),它将具有可用的JavaScript代码和CSS样式表。有什么想法吗?
2个回答

9

我认为你需要返回完整的视图而不是部分视图。部分视图不会自动获取布局(因为它们设计为插入现有页面中)。由于iframe与父页面完全独立,所以它需要自己的样式表和脚本引用标签。

    public ActionResult Box(int id)
    {
        return View(GetBox(id));
    }

6
我觉得你对局部视图和iframe都有误解。
Iframe会渲染整个网页,而不仅仅是一个局部的内容,它必须具有完整的URL,而且这个URL必须与当前页面不同(如果是相同的页面,它将尝试在自身内部反复渲染iframe,从而创建一个无限循环)。
你需要做的是指定一个返回完整视图的不同操作的URL。如果你渲染一个局部视图,它就没有标签,因此通常在标签中关联的脚本标签、链接标签、标题等都不存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接