2011-04-15 185 views
3

我想在一個<iframe src=''></iframe>內呈現PartialView呈現的部分視圖有它自己的JavaScript代碼和CSS表。我嘗試了兩種方式來得到這個工作(他們沒有工作):ASP.NET MVC 3 RenderPartial/Razor和iframe

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表單。有任何想法嗎 ?

回答

9

我相信你需要返回一個完整的View而不是PartialView。部分視圖不會自動選取佈局(因爲它們被設計爲插入現有頁面)。由於IFrame完全獨立於父頁面,它將需要它自己的樣式表和腳本引用標籤。

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

我認爲你誤解了部分視圖和iframe。

iframe呈現整個網頁,而不僅僅是一個部分,在另一個網頁內。 iframe必須具有與當前頁面不同的完整URL(如果它是相同的頁面,它會嘗試在自身內部反覆創建一個無限循環)。

您需要做的是指定返回完整視圖的不同操作的URL。如果渲染局部視圖,則不存在<head>標記,因此通常不在head標記中關聯腳本標記。沒有<link>標籤,無標題等...