ASP.NET MVC 3 RenderPartial / Razor和iframe

时间:2011-04-15 10:23:30

标签: asp.net asp.net-mvc-3 razor

我想在<iframe src=''></iframe>内部渲染PartialView渲染的局部视图具有自己的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工作表。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

我相信你需要返回一个完整的View而不是PartialView。部分视图不会自动获取布局(因为它们被设计为插入现有页面)。由于IFrame完全独立于父页面,因此它需要它自己的样式表和脚本引用标记。

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

答案 1 :(得分:6)

我认为你误解了部分观点和iframe。

iframe在另一个网页内呈现整个网页,而不仅仅是部分网页。 iframe必须有一个完整的URL,该页面与当前页面不同(如果它是同一页面,它会尝试在自身内部一遍又一遍地渲染iframe,从而创建一个无限循环)。

您需要做的是指定返回完整视图的其他操作的URL。如果渲染局部视图,则没有<head>标记,因此头标记中通常不会关联脚本标记。没有<link>标签,没有标题等......