2010-07-06 28 views
2

我正在做一种捕获联系人信息的向导应用程序。因此,在保存到数据库之前,在此过程中收集的所有数据将作为模型的属性保存在内存中(使用序列化/反序列化)。收集的数据包括上传的联系人图片。最后一页称为“预览”,其中显示在将这些信息保存到数据库之前输入的所有信息。在该预览页面上,我还想显示左侧的联系人照片和他右侧的信息。如何使用ViewData.Model中的数据显示图片[相对于使用Url.Action从远程位置获取数据]

更容易使用以下的语句

<img src = ".../.../Content/MyPicture" /> 

<img src = "<% = Url.Action("Action", "Controller", "routevalue")%>"/> 

显示图片怎么样,如果数据不是位于偏远地区,如上述样品中,而是在ViewData.Model

顺便说一句,我的模型,联络资料,有2个属性的ImageDataImageMimeType的画面保存数据。我如何使用它们?

感谢您的帮助

回答

1

通常情况下,你将其存储在一个会话变量,当对图像的要求来临时,你会养活它无论是在会议上。有几件事情需要正常工作才能发挥作用,但通常情况是这样。

还有一个选项,如果图像是小,你可以使用data uri直接内嵌到文档,就像这样:

<img src="data:image/png;base64, 
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP 
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA 
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J 
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq 
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0 
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" /> 

(例如从维基百科被盗,URI粘贴到您的位置酒吧,它会告诉你一个红点的图像)。你需要base64编码二进制数据(或url编码,但base64通常更适合二进制数据)。

+0

请你可以编辑你的例子,我不明白。我很抱歉。 – Richard77 2010-07-06 14:58:12

+0

我认为你的答案有问题。那么,上面的方式是否会让我的标记增加? – Richard77 2010-07-06 15:02:50

+0

需要在变量会话中存储什么?实际上,ImageData是存储图片数据的模型属性。称为ContactData的整个模型被序列化/ Deserialed,即所有的数据,包括图片上的数据,直到它保存到数据库中 – Richard77 2010-07-06 15:08:02

0

罗伊,

我花了2天,许多挫折只是为了实现你的会话状态变量存储数据的意思。无论如何,下面是任何人都可以利用的解决方案。

我,首先,把在会话状态变量

public ActionResult PreviewPage() 
{ 
    Session["ImageData"] = contactData.ImageData; 
    Session["ImageMimeType"] = contactData.ImageMimeType; 
    return View(contactData); 
} 

我还创建了一个动作方法发送数据,以查看以显示所需的数据。这是所有魔法都完成的地方。这个动作拿起包含在会话变量数据

public FileContentResult GetImage() 
{ 
    return File((byte[]Session["ImageData"], (string)Session["ImageMimeType"]); 
} 

最后,我怎么查看访问这些数据,而不必从一个数据库所需的取指。

<img src = "<% = Url.Action("GetImage", "Contact")%>" /> 

这是我能够理解它是如何工作的,因为我会在未来做更多的巫师般的应用是很重要的。

非常感谢您的帮助。

相关问题