如何在图像链接中显示图像?

时间:2013-08-28 22:16:04

标签: c# asp.net-mvc

我想创建图片链接但无法看到图片 这是我的扩展方法:

 public static MvcHtmlString ActionImage(this HtmlHelper htmlHelper,
 string controller,
 string action,
 object routeValues,
 string imagePath,
 string alternateText = "",
 object htmlAttributes = null)
    {
        var anchorBuilder = new TagBuilder("a");

        var url = new UrlHelper(htmlHelper.ViewContext.RequestContext);
        anchorBuilder.MergeAttribute("href", url.Action(action, controller, routeValues));
        var imgBuilder = new TagBuilder("img");
        imgBuilder.MergeAttribute("src", url.Content(imagePath));
        imgBuilder.MergeAttribute("alt", alternateText);
        var attributes = (IDictionary<string, object>)HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
        imgBuilder.MergeAttributes(attributes);
        string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing);
        anchorBuilder.InnerHtml = imgHtml;
        return MvcHtmlString.Create(anchorBuilder.ToString());
    }

我在我的观点中使用它:

@foreach (var item in Model)
{
   .
   .
    <div>
        Image:
        @Html.ActionImage("ControllerName", "action", 
        "routeValues", item.ImageAddress.toString())
    </div>
   .
   .
}

ImageAddress是字符串但不起作用,当我使用像

这样的特定地址时没有区别
@Html.ActionImage("ControllerName", "action", 
        "routeValues", "C:\1.jpg")

只有在使用此地址时才能正常工作:

"../../Content/Images/1.jpg"

有什么问题?谢谢你的帮助,对不起我的英文

3 个答案:

答案 0 :(得分:0)

浏览器无法从服务器磁盘读取文件。

您只能通过HTTP引用图片。

答案 1 :(得分:0)

试试这个:

@foreach (var item in Model)
{
   .
   .
    <div>
        Image:
        @Html.ActionImage("ControllerName", "action", 
        "routeValues", @Url.Content("~/" + item.ImageAddress.toString()))
    </div>
   .
   .
}

答案 2 :(得分:0)

在这个问题中我不使用Extension方法,我使用img标签。

<img src="@Url.Content("~/Content/Images/" + @item.Id + ".jpg")" />

我在Vahid Nasiri的电子书中创立了它,学习MVC3。 http://www.dotnettips.info/