如何渲染图像的动作链接? [英] How to render an action link with an image?
本文介绍了如何渲染图像的动作链接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道用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屋!
查看全文