从ViewData显示图像

本文关键字:图像 显示图 显示 ViewData | 更新日期: 2023-09-27 18:18:42

你能帮我从ViewData加载图像的问题吗?在我的模型中,我通过公司名称从服务器加载图像:

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

我加载这个图像到Viewdata:

ViewData["Image"] = image;

我把它返回到视图中然后我想用

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

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

从ViewData显示图像

因此,您在代码中使用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。

当这个视图在浏览器中呈现时,它会有这个图像如果文件在那个位置并且你有权查看该资源

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

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

Then in your View:

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

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

string imageURL = "~/Logos/"+  companyName  +".png"; (or use string.concat)
ViewData["Image"] = imageURL ;
<img src=@ViewData["Image"] alt="" />