2009-09-11 56 views
6

我是新来的asp.net mvc,但我想用GDI +做一个有趣的应用程序,我需要用asp.net mvc做一些图像视图。ASP.Net MVC如何在视图中显示模型的图像属性?

我有具有图像属性的Model:

namespace DomainModel.Entities 
{ 
    public class BackgroundImage 
    { 
     // Properties 
     public Image Image {get; private set; } 

     public BackgroundImage() 
     { 
      Image = Image.FromFile(@"D:\ProjectZero\DomainModel\image\bkg.PNG"); 

     } 
    } 
} 

控制器发送到以下的视图:

public ActionResult Index() 
     { 

      BackgroundImage bkImg = new BackgroundImage(); 
      return View(bkImg); 
     } 

视图看起来像这样:

<p> Height: </p><%= Model.Image.Height //it prints the height of the image %> </br> 
<p> Width: </p><%= Model.Image.Width //it prints the width %> </br> 
<p> Image: </p><%= Model.Image //does not work to display the image %> 

我如何显示该图像属性?

我需要一个div的背景图片。我不需要调整图像大小,我只需要以正常大小显示它。

是否有我错过的Html Helper?

谢谢,你的时间!

回答

15

你需要写一个控制器动作,将写入图像到响应流,并设置适当的内容类型说“图像/ PNG”。然后你可以使用img标签在视图中引用这个动作:

public ActionResult Image() 
{ 
    byte[] image = GenerateImage(); 
    return File(image, "image/png"); 
} 

而且你的视图中:

<img src="<%= Url.Action("Image") %>" alt="" /> 
+1

这解决了我的问题,但我需要使用这样的: 公共字节[ ] ImageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } 用于将我的图像转换为字节数组。 – andreiursan 2009-09-11 08:58:56

+1

我一直在试图做这个为期2天,并已被引导下来的HttpHelpers路径,派生的ActionResults调用ImageResults并没有得到我的地方,这个解决方案第一次工作,非常好! – 2012-04-15 22:05:09

+0

以上视图代码示例中缺少At符号。 kroiz 2013-08-05 12:46:41

相关问题