2012-04-10 39 views
2

我有一個局部視圖,需要在ActionLink中包裝圖像,所以當用戶點擊它時,它會去編輯圖像。我有一個名爲img.ashx的內容處理程序。如何在MVC3的ActionLink中包裝圖像?

這裏是我的形象的文字:

這裏是我的ActionLink: @ Html.ActionLink(item.Title, 「EditMediaItem」,新{位置= item.Location,ID = item.Id})

這怎麼辦?

在此先感謝。

回答

12

使用URL helper方法Url.Action,例如:

<a href="@Url.Action(item.Title, "EditMediaItem", new { location = item.Location, id = item.Id })"><img src="#" /></a> 
+0

感謝你的幫助Keith。 – 2012-04-10 18:21:30

3

我喜歡使用這個擴展:

public static class ImageHelpers 
    { 
     /// <summary> 
     /// return image link 
     /// </summary> 
     /// <param name="helper"></param> 
     /// <param name="id">Id of link control</param> 
     /// <param name="controller">target controller name</param> 
     /// <param name="action">target action name</param> 
     /// <param name="strOthers">other URL parts like query string, etc</param> 
     /// <param name="strImageURL">URL for image</param> 
     /// <param name="alternateText">Alternate Text for the image</param> 
     /// <param name="strStyle">style of the image like border properties, etc</param> 
     /// <returns></returns> 
     public static string ImageLink(this HtmlHelper helper, string id, string controller, string action, string strOthers, string strImageURL, 
      string alternateText, string strStyle, string cssClass = "imagelink") 
     { 
      return ImageLink(helper, id, controller, action, strOthers, strImageURL, alternateText, strStyle, null, cssClass); 
     } 
     /// <summary> 
     /// return image link 
     /// </summary> 
     /// <param name="helper"></param> 
     /// <param name="id">Id of link control</param> 
     /// <param name="controller">target controller name</param> 
     /// <param name="action">target action name</param> 
     /// <param name="strOthers">other URL parts like query string, etc</param> 
     /// <param name="strImageURL">URL for image</param> 
     /// <param name="alternateText">Alternate Text for the image</param> 
     /// <param name="strStyle">style of the image like border properties, etc</param> 
     /// <param name="htmlAttributes">html attributes for link</param> 
     /// <returns></returns> 
     public static string ImageLink(this HtmlHelper helper, string id, string controller, string action, string strOthers, string strImageURL, 
      string alternateText, string strStyle, object htmlAttributes, string cssClass = "imagelink") 
     { 
      // Create tag builder 
      var divBuilder = new TagBuilder("div"); 
      divBuilder.AddCssClass(cssClass); 

      var aBuilder = new TagBuilder("a"); 

      // Create valid id 
      if (!string.IsNullOrEmpty(id)) 
       aBuilder.GenerateId(id); 

      // Add attributes 
      aBuilder.MergeAttribute("href", "/" + controller + "/" + action + strOthers); //form target URL 
      aBuilder.InnerHtml = "<img src='" + strImageURL + "' alt='" + alternateText + "' class='" + cssClass + "' style='border: none;'/>" + alternateText; //set the image as inner html 
      aBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 

      divBuilder.InnerHtml = aBuilder.ToString(TagRenderMode.Normal); //to add </a> as end tag 

      // Render tag 
      return divBuilder.ToString(TagRenderMode.Normal); 
     } 
    } 

你使用這樣的:

@Html.ImageLink("", "Controller", "Action", "", 
    "~/images/whatever.png", "My test link", "imagelinkcssclass")