ASP.NET MVC 3 RenderPartial/Razor和iframe

ASP.NET MVC 3 RenderPartial/Razor和iframe,asp.net,asp.net-mvc-3,razor,Asp.net,Asp.net Mvc 3,Razor,我想在一个中呈现一个PartialView,呈现的部分视图有自己的JavaScript代码和CSS表。我尝试了两种方法来完成这项工作(没有一种有效): 1) 公共PartialViewResult框(内部id) { 返回PartialView(GetBox(id)); } 结果:纯文本(字符串),没有CSS表,JavaScript代码不工作 ==================================== (二) 结果:显然它不起作用, iframe内部没有显示任何内容 在第一个解

我想在一个
中呈现一个PartialView,呈现的部分视图有自己的JavaScript代码和CSS表。我尝试了两种方法来完成这项工作(没有一种有效):

1)
公共PartialViewResult框(内部id)
{
返回PartialView(GetBox(id));
}
结果:纯文本(字符串),没有CSS表,JavaScript代码不工作

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

(二)


结果:显然它不起作用, iframe内部没有显示任何内容


在第一个解决方案中,我想知道是否有可能返回一个RazorView对象(或其他什么),该对象将具有可工作的JavaScript代码和CSS表。有什么想法吗?

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

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

我认为你误解了部分观点和框架

iframe在另一个网页内呈现整个网页,而不仅仅是部分网页。iframe必须有一个与当前页面不同的完整URL(如果它是同一页面,它将尝试在iframe内部反复呈现,创建一个无限循环)

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

    <iframe src="@{ Html.RenderPartial("~/Views/Box.cshtml", @Model); }"></iframe>
    public ActionResult Box(int id)
    {
        return View(GetBox(id));
    }