2016-12-01 87 views
0

我目前使用Viewbag將流傳遞給視圖,但我懷疑這是我的文件未加載到我正在使用的文檔查看器控件中的原因。將MemoryStream傳遞給剃刀視圖作爲會話變量

驗證我想將我的記憶流作爲會話變量傳遞,但我不確定如何執行此操作。

迄今爲止在控制器我有我的MemoryStream(驗證是工作),並創建會話VAR像這樣:

Session["fStream"] = strm; 

,我試圖訪問它像我的Razor視圖:

Html.Gnostice().DocumentViewer(oViewerSettings).LoadDocument(@Session["PDFLink"]).Render(); 

這導致錯誤消息

Argument 1: cannot convert from object to System.IO.Stream 

由於

+4

不是一個好方法,但無論如何;你需要投它 –

+1

'Session [string]'索引器返回一個'object',你需要將其轉換爲合適的類型。但是你不想在會話變量中使用流,因爲流是不可序列化的。相反,讓視圖直接從操作方法加載流,例如通過AJAX請求。 – CodeCaster

+0

你們中的任何一個人都知道是否存在用Viewbag傳遞Memorystream的已知問題? @MarkHomer應該把它放在視圖還是控制器中? – bjjrolls

回答

0

你可以如何處理這個問題的例子,

(1)「strm」是一個整數。

Convert.ToInt32(Request["fStream"]) 

(2)布爾

Convert.ToBoolean(Request["fStream"]) 

(3)布爾可選

Request["fStream"].AsBool() 

(4)字符串

Request["fStream"].ToString() 

(5)字符串選項2

Convert.ToString(Request["fStream"]) 

我個人比較喜歡「轉換」。這是直接和可讀的。