シンプルな画像ギャラリーを作成しようとしています。アップロードは機能しますが、それらの画像の表示に問題があります。
インターネットで、これが正しい方法であることがわかりました:
[NotMapped]
public string ImageUrl
{
get
{
var isEmpty = String.IsNullOrWhiteSpace(ImgName);
if(isEmpty)
{
return Path.Combine("~/Images", "noImageAvailable.png");
}else
{
return Path.Combine("~/Images/uploaded", ImgName);
}
}
}
そしてビューで
@foreach (var item in Model) {
...
@{ var imgPath = HostingEnvironment.MapPath(item.ImageUrl); }
<img src="@Url.Content(imgPath)"/>
生成するもの:
<img src="C:\......\Images\uploaded\0_634927659072110613.jpg"/>
私のために働いたのは:
[NotMapped]
public string ImageUrl
{
get
{
var isEmpty = String.IsNullOrWhiteSpace(ImgName);
if(isEmpty)
{
return Path.Combine("../Images", "noImageAvailable.png");
}else
{
return Path.Combine("../Images/uploaded", ImgName);
}
}
}
そしてビューで:
@foreach (var item in Model) {
.....
<img src="@Url.Content(item.ImageUrl)"/>
生成するもの:
<img src="../Images/uploaded\0_634927649098750170.jpg"/>
備考
2 つの違いがあります。
- ~/画像 vs ../画像
- ビューの線
興味深いのは、
<img src="C:\......\Images\uploaded\0_634927659072110613.jpg"/>
は画像を静的なスタンドアロン ファイルに表示しますが、IIS によって提供される場合は表示されません。画像の代わりに空白のスペースがあります。
私の質問は、正しいアプローチとは何か、また最初のアプローチが機能しないのはなぜですか?