我想创建图片链接但无法看到图片 这是我的扩展方法:
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"
有什么问题?谢谢你的帮助,对不起我的英文
答案 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/