Html.RouteLink() HtmlHelper hoạt động tốt cho các liên kết văn bản. Nhưng cách tốt nhất để liên kết hình ảnh là gì?Có một ASP.NET MVC HtmlHelper cho liên kết hình ảnh không?
Trả lời
đây của tôi, các chức năng cốt lõi của nó làm cho một số quá tải
public static string ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes)
{
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
string imgtag = htmlHelper.Image(imgSrc, alt,imgHtmlAttributes);
string url = urlHelper.Action(actionName, controllerName, routeValues);
TagBuilder imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml =imgtag;
imglink.MergeAttributes(new RouteValueDictionary(htmlAttributes), true);
return imglink.ToString();
}
<a href="<%=Url.RouteUrl(...)%>"><img src="..." alt="..." /></a>
+1 vì đây là phương pháp nhanh nhất tôi được sử dụng trong số rất nhiều đã trả lời đây. Tôi chỉ xác định hành động và bộ điều khiển trong phương pháp này và nó hoạt động tốt. – nccsbim071
Tạo tiện ích trợ giúp của riêng bạn.
public static string Image(this HtmlHelper helper, string src, string alt)
{
TagBuilder tb = new TagBuilder("img");
tb.Attributes.Add("src", helper.Encode(src));
tb.Attributes.Add("alt", helper.Encode(alt));
return tb.ToString(TagRenderMode.SelfClosing);
}
Tuy nhiên, điều này không tạo liên kết hành động hình ảnh. Đó không phải là những gì Zack đang yêu cầu? –
ngay cả khi điều này không trả lời trực tiếp câu hỏi tôi thực sự thích phương pháp này để tạo tiện ích mở rộng trình trợ giúp thẻ hình ảnh. Cảm ơn :) –
<%= Html.ActionLink(Html.Image(imageUrl, imageAlt), actionName, controllerName) %>
có thể làm việc, mở rộng hình ảnh là từ tương lai lắp ráp. Hoặc tự gia hạn.
Không có súp-tag. Tốt đẹp. –
Dường như không hoạt động. Các Html.ActionLink() phương pháp xuất hiện để mã hóa html arg đầu tiên vì vậy tất cả các dấu ngoặc nhọn vv được thoát. – macon
<%= Html.RouteLink("PLACEHOLDER", ...).Replace("PLACEHOLDER", "<img src=""..."" alt=""..."" />")%>
Điều này đòi hỏi một loạt các thao tác chuỗi xấu xí. –
tôi không có đủ SO vênh vang để thêm một bình luận, nhưng đây là một lời nhận xét trên MiniScalope's comment above:
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
Tôi sẽ su ggest làm phương pháp này một phần mở rộng HtmlHelper của riêng mình (và đơn giản hóa nó), để tái sử dụng:
private static UrlHelper Url(this HtmlHelper helper)
{
return new UrlHelper(helper.ViewContext.RequestContext);
}
Đây là một phiên bản cập nhật mà tôi có từ MiniScalope câu trả lời ở trên. Tôi đang sử dụng VS2010 và ASP.Net MVC 2 Preview
public static string ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes)
{
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
TagBuilder imgTag = new TagBuilder("img");
imgTag.MergeAttribute("src", imgSrc);
imgTag.MergeAttributes((IDictionary<string, string>) imgHtmlAttributes,true);
string url = urlHelper.Action(actionName, controllerName, routeValues);
TagBuilder imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString();
imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true);
return imglink.ToString();
}
mã này đã được thử nghiệm trên mvc4 ...
public static MvcHtmlString ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object routeValues, object htmlAttributes, object imgHtmlAttributes)
{
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
var imgTag = new TagBuilder("img");
imgTag.MergeAttribute("src", imgSrc);
imgTag.MergeAttributes((IDictionary<string, string>)imgHtmlAttributes, true);
string url = urlHelper.Action(actionName, controllerName, routeValues);
var imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString();
imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true);
return MvcHtmlString.Create(imglink.ToString());
}
- 1. Biểu đồ Google HtmlHelper cho Asp.net Mvc
- 2. Trợ giúp với ASP.NET MVC Thiết kế API HtmlHelper
- 3. ASP.NET MVC Html.ActionLink siêu liên kết màu
- 4. NullReferenceException Vấn đề với ASP.NET MVC Textbox HtmlHelper
- 5. Asp: Hình ảnh có liên kết
- 6. Hiển thị/Ẩn liên kết trong một ASP.Net MVC Xem
- 7. cho hình ảnh tĩnh? vấn đề định tuyến asp.net mvc?
- 8. Asp.Net MVC Liên kết dữ liệu DropDownList
- 9. jQuery selector cho liên kết mà không có một hình ảnh bên trong
- 10. Tải hình ảnh lên trong ASP.NET MVC
- 11. Tạo một hình ảnh chuyển đổi AJAX trong ASP.NET MVC
- 12. ASP.NET MVC tải hình ảnh chậm qua khung MVC?
- 13. Liên kết mô hình JSON Asp.Net MVC 3 không hoạt động
- 14. ASP.NET MVC - Không thể liên kết mảng để xem mô hình
- 15. Làm thế nào để HtmlHelper có thể được sử dụng để tạo ra một siêu liên kết bên ngoài?
- 16. * Liên kết hình ảnh dọc * hoàn hảo
- 17. ViewState có liên quan trong ASP.NET MVC không?
- 18. hình ảnh được liên kết trong reStructuredText
- 19. hình ảnh liên kết bên SVG
- 20. Siêu liên kết HTML có hình ảnh và văn bản
- 21. Mẫu MVC ASP.NET Gửi bằng Liên kết thay vì Nút
- 22. canh giữa hình ảnh với một liên kết trên đó
- 23. ASP.NET MVC 4 - Mô hình lồng nhau - Cách thiết lập các liên kết phù hợp?
- 24. gạch giữa hai hình ảnh liên kết
- 25. Cách tạo liên kết chứa hình ảnh & văn bản?
- 26. Liên kết hình ảnh UITableViewCell ở bên phải, có thể?
- 27. Liên kết hình ảnh trên iPhone không thể nhấp được
- 28. Mô hình liên kết bộ sưu tập lồng nhau trong ASP.NET MVC
- 29. rsvg không hiển thị hình ảnh được liên kết
- 30. Liên kết mô hình MVC ASP.NET IList trong Mẫu biên tập
Đây có phải là HtmlString thay vì chuỗi không? với trả về HtmlString mới (imglink.ToString()); ? – Stacker
Chỉ cần chỉ ra rằng htmlHelper.Image() không còn trong MVC4 nữa. –
không thể khai báo htmlHelper.Image() – kasim