3

ActionLink で画像をラップする必要がある部分的なビューがあるため、ユーザーがクリックすると画像が編集されます。img.ashx というコンテンツ ハンドラがあります。

これが私のイメージテキストです:

これが私の ActionLink です: @Html.ActionLink(item.Title, "EditMediaItem", new { location = item.Location, id = item.Id })

これはどのように行うことができますか?

前もって感謝します。

4

2 に答える 2

13

Url ヘルパー メソッド Url.Action を使用します。例:

<a href="@Url.Action(item.Title, "EditMediaItem", new { location = item.Location, id = item.Id })"><img src="#" /></a>
于 2012-04-10T18:19:16.623 に答える
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")
于 2012-04-10T18:24:32.730 に答える