Image + ActionLink = Html.ImageActionLink
1 using System; 2 using System.Collections.Generic; 3 using System.Web.Mvc; 4 using System.ComponentModel; 5 6 namespace OPC.Models.Helpers 7 { 8 public static class ImageActionLinkExtension 9 { 10 public static MvcHtmlString ImageActionLink( 11 this HtmlHelper helper, 12 string imageUrl, 13 string altText, 14 string actionName, 15 string controllerName, 16 object routeValues, 17 object linkHtmlAttributes, 18 object imgHtmlAttributes) 19 { 20 var linkAttributes = AnonymousObjectToKeyValue(linkHtmlAttributes); 21 var imgAttributes = AnonymousObjectToKeyValue(imgHtmlAttributes); 22 var imgBuilder = new TagBuilder("img"); 23 imgBuilder.MergeAttribute("src", imageUrl); 24 imgBuilder.MergeAttribute("alt", altText); 25 imgBuilder.MergeAttributes(imgAttributes, true); 26 var urlHelper = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection); 27 var linkBuilder = new TagBuilder("a"); 28 linkBuilder.MergeAttribute("href", urlHelper.Action(actionName, controllerName, routeValues)); 29 linkBuilder.MergeAttributes(linkAttributes, true); 30 var text = linkBuilder.ToString(TagRenderMode.StartTag); 31 text += imgBuilder.ToString(TagRenderMode.SelfClosing); 32 text += linkBuilder.ToString(TagRenderMode.EndTag); 33 return MvcHtmlString.Create(text); 34 } 35 36 public static MvcHtmlString ImageActionLink( 37 this HtmlHelper helper, 38 string imageUrl, 39 string altText, 40 string actionName, 41 object routeValues, 42 object imgHtmlAttributes) 43 { 44 var imgAttributes = AnonymousObjectToKeyValue(imgHtmlAttributes); 45 var imgBuilder = new TagBuilder("img"); 46 imgBuilder.MergeAttribute("src", imageUrl); 47 imgBuilder.MergeAttribute("alt", altText); 48 imgBuilder.MergeAttributes(imgAttributes, true); 49 var urlHelper = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection); 50 var linkBuilder = new TagBuilder("a"); 51 linkBuilder.MergeAttribute("href", urlHelper.Action(actionName, routeValues)); 52 var text = linkBuilder.ToString(TagRenderMode.StartTag); 53 text += imgBuilder.ToString(TagRenderMode.SelfClosing); 54 text += linkBuilder.ToString(TagRenderMode.EndTag); 55 return MvcHtmlString.Create(text); 56 } 57 58 public static MvcHtmlString ImageActionLink( 59 this HtmlHelper helper, 60 string imageUrl, 61 string altText, 62 string actionName, 63 object routeValues) 64 { 65 var imgBuilder = new TagBuilder("img"); 66 imgBuilder.MergeAttribute("src", imageUrl); 67 imgBuilder.MergeAttribute("alt", altText); 68 var urlHelper = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection); 69 var linkBuilder = new TagBuilder("a"); 70 linkBuilder.MergeAttribute("href", urlHelper.Action(actionName, routeValues)); 71 var text = linkBuilder.ToString(TagRenderMode.StartTag); 72 text += imgBuilder.ToString(TagRenderMode.SelfClosing); 73 text += linkBuilder.ToString(TagRenderMode.EndTag); 74 return MvcHtmlString.Create(text); 75 } 76 77 public static MvcHtmlString ImageActionLink( 78 this HtmlHelper helper, 79 string imageUrl, 80 string altText, 81 string actionName) 82 { 83 var imgBuilder = new TagBuilder("img"); 84 imgBuilder.MergeAttribute("src", imageUrl); 85 imgBuilder.MergeAttribute("alt", altText); 86 var urlHelper = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection); 87 var linkBuilder = new TagBuilder("a"); 88 linkBuilder.MergeAttribute("href", urlHelper.Action(actionName)); 89 var text = linkBuilder.ToString(TagRenderMode.StartTag); 90 text += imgBuilder.ToString(TagRenderMode.SelfClosing); 91 text += linkBuilder.ToString(TagRenderMode.EndTag); 92 return MvcHtmlString.Create(text); 93 } 94 95 private static Dictionary<string, object> AnonymousObjectToKeyValue(object anonymousObject) 96 { 97 var dictionary = new Dictionary<string, object>(); 98 if (anonymousObject != null) 99 { 100 foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(anonymousObject)) 101 { 102 dictionary.Add(propertyDescriptor.Name, propertyDescriptor.GetValue(anonymousObject)); 103 } 104 } 105 return dictionary; 106 } 107 } 108 }
示例:
@Html.ImageActionLink(Url.Content("~/Content/Images/Icons/edit.png"), "", "Edit", new { id = item.Id }, new { title = "Edit", border = 0, hspace = 2 }) @Html.ImageActionLink(Url.Content("~/Content/Images/Icons/personalDetails.png"), "", "Details", new { id = item.Id }, new { title = "Details", border = 0, hspace = 2 }) @Html.ImageActionLink(Url.Content("~/Content/Images/Icons/delete.png"), "", "Delete", new { id = item.Id }, new { title = "Delete", border = 0, hspace = 2 })
原文地址:http://kitsula.com/Article/Html.ImageActionLink-extension
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。