从ViewData显示图像

时间:2014-08-19 09:48:46

标签: c# asp.net-mvc

您可以帮我解决从ViewData加载图片的问题吗? 在我的模型中,我按公司名称从服务器加载图像:

System.Drawing.Image image = System.Drawing.Image.FromFile(HttpContext.Server.MapPath("~/Logos/"+  companyName  +".png"))

我将此图片加载到Viewdata:

ViewData["Image"] = image;

我将它返回到View,然后我想用:

再次加载该Image
<img src=@ViewData["Image"] alt="" />

不显示图像。你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

因此,您在代码中使用MapPath,我相信图像文件位于项目源本身而不是二进制格式。您应该在视图文件中使用这样的图像路径,将下面的路径替换为项目中文件的路径:

<img src="@Url.Content("~/Content/App/Images/filename.gif")" alt="Loading..." />

或者像这样:

在控制器中:

public ActionResult Action1(){
 ViewData.CompanyName = "C1"; // this value can be populated from anywhere.
 return View();
}

在视图中

<img src="@Url.Content(String.Format("~/Logos/{0}.png", ViewData.CompanyName))" alt="Loading..." />

其中ViewData.CompanyName是一个填充然后赋予视图的字符串。 您也可以使用强类型类为视图创建模型,而不是使用ViewData。

当此视图将在浏览器中呈现时,如果该文件存在于该位置,则它将具有此图像,并且您有权查看该资源。

答案 1 :(得分:0)

src属性指定图像的URL而不是图像本身。这是一个字符串值。你应该做点什么

string imageURL = "~/Logos/"+  companyName  +".png"; (or use string.concat)
ViewData["Image"] = imageURL ;

<img src=@ViewData["Image"] alt="" />

答案 2 :(得分:0)

您不需要将路径转换为System.Drawing.Image。试试这个:

var imageURL = Url.Content("~/Logos/"+  companyName  +".png");
ViewData["ImageURL"] = imageURL;

然后在你的视图中:

<img src="@(ViewData["ImageURL"])" alt="" />