2013-06-25 95 views
3

我在試着修改這段代碼: http://www.codeproject.com/Articles/260470/PDF-reporting-using-ASP-NET-MVC3 爲了讓它獲得ViewBag數據來渲染PDF中的視圖。RenderPartial和ViewBag

基本上,我需要通過一個新的語境Html.RenderPartial我ViewBag,現在該代碼:

Html.RenderPartial(viewName, model); 

而且我試圖改變它的東西,如:

Html.RenderPartial(viewName, model, new ViewDataDictionary(ViewBag)); 

我沒有得到任何錯誤,但字典保持空白。

BR

回答

11

嘗試在ViewData屬性傳遞ViewBag代替。

Html.RenderPartial(viewName, model, new ViewDataDictionary(ViewData)); 

ViewBag屬性是一個動態對象,所以ViewDataDictionary構造您所呼叫的是一個需要object。你最好使用已經填充的那個ViewDataDictionary。 ViewBag和ViewData中的數據是相同的。

+0

我可以使它成功,但我還發現我使用的是一個名爲「ViewBag」的變量,我認爲這不是一個好主意,所以我將它改爲更好的名稱,我做了這個改變,現在效果很好!您! – Santiago

+0

+ 1.謝謝!大。我知道ViewData,但從未使用它。有些時候我們遇到了這個問題,大部分時間都是用來創建一個新的viewModel來解決問題。 – Tchaps

0

您可以使用:

@Html.Partial(viewName) 

在從主視圖部分viewbag將訪問。

好的。如果你需要從局部視圖渲染HTML到PDF您可以使用此代碼:

@{ 
    var htmlString = Html.Partial(viewName);  
    var pdfData = PdfComposerClass.CreatePdfStaticMethod(htmlString); 
} 
+0

謝謝,但不是我所需要的,這是一個特殊情況,在某些情況下,我需要渲染一個視圖到PDF,做這個工作的API,但沒有得到ViewBag數據,我本地化它創建一個新的環境,問題似乎在我上面寫的行。 – Santiago

+0

看看更新後的答案,可能會有幫助。 – YD1m