目前我的ViewModel中有一个代表我的Image的字节数组。我用以下代码显示它:
<img src="@String.Format("data:image/gif;base64,{0}", Convert.ToBase64String(Model.Image))" />
现在我不希望在源文件中有一个Base64字符串,而是一个指向图像的链接。像:
<img src="Images/" + Model.Id"/>
会返回一张图片。
如何编写这样的方法来返回图像链接?
答案 0 :(得分:44)
您可以定义将为图像提供服务的控制器操作:
public class ImagesController: Controller
{
public ActionResult Index(int id)
{
byte[] imageData = ... go get your image data from the id
return File(imageData, "image/png"); // Might need to adjust the content type based on your actual image type
}
}
在您的视图中,只需将src
标记的img
属性指向此控制器操作:
<img src="@Url.Action("Index", "Images", new { id = Model.Id })" />
答案 1 :(得分:9)
一种方法是将其添加到新的c#类或HtmlExtensionsclass
public static class HtmlExtensions
{
public static MvcHtmlString Image(this HtmlHelper html, byte[] image)
{
var img = String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(image));
return new MvcHtmlString("<img src='" + img + "' />");
}
}
然后你可以在任何视图中执行此操作
@Html.Image(Model.MyImageBytes)