如何将模型对象传递给img标签

时间:2013-08-23 12:02:51

标签: html asp.net-mvc asp.net-mvc-4 razor

我在视图中有一个foreach循环具有字段Image的对象。现在我希望显示该图像。所以我想把图像名称放在一个html img标签中。

查看:

@foreach (var item in LstBagels)
            {
                @Html.Hidden("TxtId", item.BagelId);
                <div id="bagel">
                    <div id="bagel-image">
                        <!--<img src="~/App_Data/images/" + @Html.LabelFor(m => item.Image) + ".jpg" />-->
                    </div>
                </div>    
            }

图像存储在App_Data / images地图中。在数据库中,我只存储名称“nobagel”。

修改

根据给定的解决方案,我得到以下html:

<img src="/App_Data/images/nobagel.jpg" >

这似乎是正确的,但图像没有显示。

编辑2:

我现在在我的视图中使用它:

<img src="@Url.Content(String.Format(Server.MapPath("~")  + "App_Data\\images\\{0}.jpg", item.Image))" alt="" />

这给出了这个html输出:

<img alt="" src="C:\Users\stage\Desktop\BestelBagels\BestelBagels\BestelBagels\App_Data\images\nobagel.jpg">

如果我只是将src复制粘贴到我的浏览器,我可以看到图像。

4 个答案:

答案 0 :(得分:1)

试试这个,您不需要使用@Html.LabelFor

 <img src="~/App_Data/images/@(item.Image).jpg" />

答案 1 :(得分:1)

使用Url.Content确保网址正确合格:

<img src='@Url.Content(String.Format("~/App_Data/images/{0}.jpg", item.Image))' />

答案 2 :(得分:0)

删除@Html.LabelFor,仅使用item.Image。 (如果item.Image是文件名)

<img src="/App_Data/images/@(item.Image).jpg" />

答案 3 :(得分:0)

试试这个

@foreach (var item in LstBagels)
{
    @Html.Hidden("TxtId", item.BagelId);
    <div id="bagel">
        <div id="bagel-image">
            <img src="@string.Format("~/App_Data/images/{0}.jpg", item.Image)" alt="" />
            @item.Image
        </div>
    </div>    
}