1) どのような画像を使用すればよいですか? System.Drawing 画像にするか、新しい BitmapImage にするか?
そのなかで何も。バイト配列 ( byte[]
) を使用する必要があります。
2) これにより、コード ファーストと EF に関して問題が発生しますか?
私はそうは思わない。私は EF の専門家ではありませんが、byte[]
プロパティをvarbinary(max)
データベース内の対応する列にマップできるはずだと思います。
画像を表示し、ビュー モデルにプロパティを設定することに関する元の質問に戻ります。data uri scheme
それを行っても、すべてのブラウザーで広くサポートされていない を使用しない限り、このバイト配列プロパティをビュー内の画像として表示することはできません。そのルートに進むことにした場合、これがどのように見えるかを次に示します。
@model MyViewModel
...
<img src="data:image/png;base64,@Html.Raw(Convert.ToBase64String(Model.Image))" alt="some image">
しかし、代替手段としてすべてのブラウザーで機能するソリューションを探している場合は、データベースから画像をバイト配列として取得し、それを応答にストリーミングするコントローラー アクションを設計できます。<img>
次に、ビューからタグ内でこのアクションを参照できます。
例を見てみましょう:
public ActionResult Image(int id)
{
byte[] imageData = ... go query your database to retrieve the corresponding
image record using the id
return File(imageData, "image/png");
}
次に、メイン ビュー内で、<img>
このコントローラー アクションにタグを付けるだけです。
@model MyViewModel
...
<img src="@Url.Action("Image", "SomeController", new { id = Model.Id })">