【问题标题】:Pass a MemoryStream to razor View as Session variable将 MemoryStream 作为 Session 变量传递给 razor View
【发布时间】:2017-11-03 15:20:18
【问题描述】:

我目前正在使用 Viewbag 将我的流传递给视图,但我怀疑这是我的文件没有加载到我正在使用的文档查看器控件中的原因。

为了验证我想将我的内存流作为会话变量传递,但不确定如何执行此操作。

到目前为止,在控制器中,我已经获得了内存流(已验证可以正常工作)并像这样创建了会话变量:

Session["fStream"] = strm;

并尝试在我的剃刀视图中访问它,例如:

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

导致错误消息

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

谢谢

【问题讨论】:

  • 不是一个好方法,但无论如何;你需要投射它
  • Session[string] 索引器返回一个object,您需要将其转换为适当的类型。但是您不想在会话变量中使用流,因为流是不可序列化的。而是让您的视图直接从操作方法加载流,例如通过 AJAX 请求。
  • 你们中的任何一个都知道使用 Viewbag 传递 Memorystreams 是否存在已知问题? @MarkHomer 我应该将它投射到视图还是控制器中?

标签: c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

您如何处理此问题的示例,

(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"]) 

我个人更喜欢“转换”。这是简单易读的。

【讨论】:

    猜你喜欢
    • 2014-03-14
    • 2015-10-30
    • 1970-01-01
    • 2021-01-31
    • 2012-02-21
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多