如何渲染图像的动作链接? [英] How to render an action link with an image?

查看:214
本文介绍了如何渲染图像的动作链接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道用Html.ActionLink()来渲染文本< A HREF ...方式> 链接到动作

我如何呈现一个链接,有一个基本的图像为纽带的行动?

 < A HREF =foo的>< IMG SRC =asdfasdf/>< / A>


解决方案

下面是code代表的HtmlHelper ImageLink的扩展我使用。

  / *
     *图片链接的HTML帮助
     * /    ///<总结>
    ///返回图像链接
    ///< /总结>
    ///< PARAM NAME =帮手>< /参数>
    ///< PARAM NAME =图片网址> URL图像和LT; /参数>
    ///< PARAM NAME =控制器>目标控制器的名称和LT; /参数>
    ///< PARAM NAME =行动>目标操作名称和LT; /参数>
    ///< PARAM NAME =LINKTEXT>锚文字< /参数>
    公共静态字符串ImageLink的(这的HtmlHelper帮手,串图片网址,串控制器,串动,串LINKTEXT)
    {
        返回ImageLink的(帮手,空,控制器,动作,LINKTEXT,图片网址,NULL,NULL,NULL,NULL);
    }    ///<总结>
    ///返回图像链接
    ///< /总结>
    ///< PARAM NAME =帮手>< /参数>
    ///< PARAM NAME =图片网址> URL图像和LT; /参数>
    ///< PARAM NAME =控制器>目标控制器的名称和LT; /参数>
    ///< PARAM NAME =行动>目标操作名称和LT; /参数>
    ///< PARAM NAME =LINKTEXT>锚文字< /参数>
    ///< PARAM NAME =htmlAttributes>锚属性< /参数>
    公共静态字符串ImageLink的(这的HtmlHelper帮手,串图片网址,串控制器,串动,串LINKTEXT,对象htmlAttributes)
    {
        返回ImageLink的(帮手,空,控制器,动作,LINKTEXT,图片网址,NULL,NULL,新RouteValueDictionary(htmlAttributes),NULL);
    }    ///<总结>
    ///返回图像链接
    ///< /总结>
    ///< PARAM NAME =帮手>< /参数>
    ///< PARAM NAME =图片网址> URL图像和LT; /参数>
    ///< PARAM NAME =控制器>目标控制器的名称和LT; /参数>
    ///< PARAM NAME =行动>目标操作名称和LT; /参数>
    ///< PARAM NAME =LINKTEXT>锚文字< /参数>
    ///< PARAM NAME =htmlAttributes>锚属性< /参数>
    ///< PARAM NAME =routeValues​​>路由值< /参数>
    公共静态字符串ImageLink的(这的HtmlHelper帮手,串图片网址,串控制器,串动,串LINKTEXT,对象htmlAttributes,对象routeValues​​)
    {
        返回ImageLink的(帮手,空,控制器,动作,LINKTEXT,图片网址,NULL,NULL,新RouteValueDictionary(htmlAttributes),新RouteValueDictionary(routeValues​​));
    }    ///<总结>
    ///返回图像链接
    ///< /总结>
    ///< PARAM NAME =帮手>< /参数>
    ///< PARAM NAME =ID和SEQ ID链路控制和LT的; /参数>
    ///< PARAM NAME =控制器>目标控制器的名称和LT; /参数>
    ///< PARAM NAME =行动>目标操作名称和LT; /参数>
    ///< PARAM NAME =strOthers>其他部位的网址查询字符串一样,等< /参数>
    ///< PARAM NAME =strImageURL> URL图像和LT; /参数>
    ///< PARAM NAME =还有AlternateText>对于图像和LT替代文本; /参数>
    ///< PARAM NAME =strStyle>就像边框属性的形象风格等< /参数>
    ///<&回报GT;< /回报>
    公共静态字符串ImageLink的(这的HtmlHelper帮手,串号,串控制器,串动,LINKTEXT字符串,字符串strImageURL,字符串还有AlternateText,串strStyle)
    {
        返回ImageLink的(辅助,ID,控制器,动作,LINKTEXT,strImageURL,还有AlternateText,strStyle,NULL,NULL);
    }    ///<总结>
    ///返回图像链接
    ///< /总结>
    ///< PARAM NAME =帮手>< /参数>
    ///< PARAM NAME =ID和SEQ ID链路控制和LT的; /参数>
    ///< PARAM NAME =控制器>目标控制器的名称和LT; /参数>
    ///< PARAM NAME =行动>目标操作名称和LT; /参数>
    ///< PARAM NAME =LINKTEXT>锚文字< /参数>
    ///< PARAM NAME =strImageURL> URL图像和LT; /参数>
    ///< PARAM NAME =还有AlternateText>对于图像和LT替代文本; /参数>
    ///< PARAM NAME =strStyle>就像边框属性的形象风格等< /参数>
    ///< PARAM NAME =htmlAttributes>的HTML attribues链路< /参数>
    ///<&回报GT;< /回报>
    公共静态字符串ImageLink的(这的HtmlHelper帮手,串号,串控制器,串动,LINKTEXT字符串,字符串strImageURL,字符串还有AlternateText,串strStyle,IDictionary的<字符串对象> htmlAttributes,RouteValueDictionary routeValues​​)
    {
        //构建img标签
        TagBuilder形象=新TagBuilder(IMG);
        image.MergeAttribute(src用户,strImageURL);
        image.MergeAttribute(ALT,还有AlternateText);
        image.MergeAttribute(VALIGN,中间);
        image.MergeAttribute(边界,无);        TagBuilder跨度=新TagBuilder(跨度);        //创建标签制造商
        变种锚=新TagBuilder(一);
        VAR URL =新UrlHelper(helper.ViewContext.RequestContext).Action(动作,控制器,routeValues​​);        //创建有效身份证件
        anchor.GenerateId(ID);        //添加属性
        //anchor.MergeAttribute(\"href,/+控制器+/+动作); //形式的目标URL
        anchor.MergeAttribute(的href,URL);
        anchor.MergeAttribute(类,actionImage);
        如果(htmlAttributes!= NULL)
            anchor.MergeAttributes(新RouteValueDictionary(htmlAttributes));        //把锚标记中的img标签。
        如果(String.IsNullOrEmpty(LINKTEXT))
        {
            anchor.InnerHtml = image.ToString(TagRenderMode.Normal);
        }
        其他
        {
            span.InnerHtml = LINKTEXT;
            anchor.InnerHtml = image.ToString(TagRenderMode.Normal)++ span.ToString(TagRenderMode.Normal);
        }        //渲染标签
        返回anchor.ToString(TagRenderMode.Normal); //添加< / A>作为结束标记
    }

I know to use Html.ActionLink() to render textual <a href..."> links to actions.

How do I render a link to an action that has an underlying image as the link?

<a href="foo"><img src="asdfasdf"/></a>

解决方案

Here is code for the ImageLink HtmlHelper extension I use.

    /*
     * Image Link HTML helper
     */

    /// <summary>
    /// return image link
    /// </summary>
    /// <param name="helper"></param>
    /// <param name="imageUrl">URL for image</param>
    /// <param name="controller">target controller name</param>
    /// <param name="action">target action name</param>
    /// <param name="linkText">anchor text</param>
    public static string ImageLink(this HtmlHelper helper, string imageUrl, string controller, string action, string linkText)
    {
        return ImageLink(helper, null, controller, action, linkText, imageUrl, null, null, null, null);
    }

    /// <summary>
    /// return image link
    /// </summary>
    /// <param name="helper"></param>
    /// <param name="imageUrl">URL for image</param>
    /// <param name="controller">target controller name</param>
    /// <param name="action">target action name</param>
    /// <param name="linkText">anchor text</param>
    /// <param name="htmlAttributes">anchor attributes</param>
    public static string ImageLink(this HtmlHelper helper, string imageUrl, string controller, string action, string linkText, object htmlAttributes)
    {
        return ImageLink(helper, null, controller, action, linkText, imageUrl, null, null, new RouteValueDictionary(htmlAttributes), null);
    }

    /// <summary>
    /// return image link
    /// </summary>
    /// <param name="helper"></param>
    /// <param name="imageUrl">URL for image</param>
    /// <param name="controller">target controller name</param>
    /// <param name="action">target action name</param>
    /// <param name="linkText">anchor text</param>
    /// <param name="htmlAttributes">anchor attributes</param>
    /// <param name="routeValues">route values</param>
    public static string ImageLink(this HtmlHelper helper, string imageUrl, string controller, string action, string linkText, object htmlAttributes, object routeValues)
    {
        return ImageLink(helper, null, controller, action, linkText, imageUrl, null, null, new RouteValueDictionary(htmlAttributes), new RouteValueDictionary(routeValues));
    }

    /// <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 querystring, 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 linkText, string strImageURL, string alternateText, string strStyle)
    {
        return ImageLink(helper, id, controller, action, linkText, strImageURL, alternateText, strStyle, null, null);
    }

    /// <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="linkText">anchor text</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 attribues for link</param>
    /// <returns></returns>
    public static string ImageLink(this HtmlHelper helper, string id, string controller, string action, string linkText, string strImageURL, string alternateText, string strStyle, IDictionary<string, object> htmlAttributes, RouteValueDictionary routeValues)
    {
        // Build the img tag
        TagBuilder image = new TagBuilder("img");
        image.MergeAttribute("src", strImageURL);
        image.MergeAttribute("alt", alternateText);
        image.MergeAttribute("valign", "middle");
        image.MergeAttribute("border", "none");

        TagBuilder span = new TagBuilder("span");

        // Create tag builder
        var anchor = new TagBuilder("a");
        var url = new UrlHelper(helper.ViewContext.RequestContext).Action(action, controller, routeValues);

        // Create valid id
        anchor.GenerateId(id);

        // Add attributes
        //anchor.MergeAttribute("href", "/" + controller + "/" + action); //form target URL
        anchor.MergeAttribute("href", url);
        anchor.MergeAttribute("class", "actionImage");
        if (htmlAttributes != null)
            anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));

        // place the img tag inside the anchor tag.
        if (String.IsNullOrEmpty(linkText))
        {
            anchor.InnerHtml = image.ToString(TagRenderMode.Normal);
        }
        else
        {
            span.InnerHtml = linkText;
            anchor.InnerHtml = image.ToString(TagRenderMode.Normal) + " " + span.ToString(TagRenderMode.Normal);
        }

        // Render tag
        return anchor.ToString(TagRenderMode.Normal); //to add </a> as end tag
    }

这篇关于如何渲染图像的动作链接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆