現在、ViewModelにイメージを表すバイト配列があります。次のコードで表示します。
<img src="@String.Format("data:image/gif;base64,{0}", Convert.ToBase64String(Model.Image))" />
ここで、ソースファイルにBase64文字列を含めるのではなく、イメージへのリンクを使用します。お気に入り:
<img src="Images/" + Model.Id"/>
imageを返します。
Imageリンクを返すようなメソッドを作成するにはどうすればよいですか?
イメージを提供するコントローラーアクションを定義できます。
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つの方法は、これを新しい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)