目前,我在ViewModel中有一个表示图像的字节数组。我使用以下代码显示它:
<img src="@String.Format("data:image/gif;base64,{0}", Convert.ToBase64String(Model.Image))" />
现在我不想在我的源文件中有一个Base64字符串,而是想要一个指向图片的链接。比如:
<img src="Images/" + Model.Id"/>
我该怎样编写这样一个方法来返回一个图片链接?
目前,我在ViewModel中有一个表示图像的字节数组。我使用以下代码显示它:
<img src="@String.Format("data:image/gif;base64,{0}", Convert.ToBase64String(Model.Image))" />
现在我不想在我的源文件中有一个Base64字符串,而是想要一个指向图片的链接。比如:
<img src="Images/" + Model.Id"/>
我该怎样编写这样一个方法来返回一个图片链接?
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
}
}
根据您的观点,只需将img
标签的src
属性指向此控制器操作:
<img src="@Url.Action("Index", "Images", new { id = Model.Id })" />
一种方法是将此添加到新的C#类或HtmlExtensions类中。
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)