Html 如何在asp.net mvc4中为操作链接提供图像

Html 如何在asp.net mvc4中为操作链接提供图像,html,asp.net-mvc-4,actionlink,Html,Asp.net Mvc 4,Actionlink,我有一个任务给行动链接的图像 @Ajax.ActionLink("Delete", "Delete", "FiUser", new { id = item.UserID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "DeletFiUserOnSucess", Confirm = "Do you want to delete this record?" }) 图像是 <img src="../../Images/delete.

我有一个任务给行动链接的图像

@Ajax.ActionLink("Delete", "Delete", "FiUser", new { id = item.UserID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "DeletFiUserOnSucess", Confirm = "Do you want to delete this record?" })
图像是

<img src="../../Images/delete.png" alt="delete" />


如何执行此操作?

在Actionlink中,定义一个类MyCssClass

@Ajax.ActionLink("Delete", "Delete", "FiUser", new { id = item.UserID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "DeletFiUserOnSucess", Confirm = "Do you want to delete this record?" }, new { @class = "MyCssClass" })

.MyCssClass
{
  background-image:url('../../Images/delete.png');
}

另一种方法是创建一个小的扩展,使用任何HTML代码,而不是上下文中的字符串“Delete”:

public static MvcHtmlString HtmlActionLink(this AjaxHelper helper, string html, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
{
    var link = helper.ActionLink("[replace] ", actionName, controllerName, routeValues, ajaxOptions, htmlAttributes).ToHtmlString();
    return new MvcHtmlString(link.Replace("[replace]", html));
}
您可以这样使用:

@Ajax.HtmlActionLink("<img src='delete.png' alt=''>", "Delete", "FiUser", new { id = item.UserID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "DeletFiUserOnSucess", Confirm = "Do you want to delete this record?" }) 
@Ajax.HtmlActionLink(“,”删除“,”FiUser“,”新建{id=item.UserID},新建AjaxOptions{HttpMethod=“POST”,OnSuccess=“deletfiuseronsucss”,Confirm=“是否要删除此记录?”)

或使用此扩展并自定义:

        /// <summary>
        /// Create an Ajax.ActionLink with an associated glyphicon
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="glyphicon"></param>
        /// <param name="ajaxOptions"></param>
        /// <param name="routeValues"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString ImageActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, string glyphicon, AjaxOptions ajaxOptions, RouteValueDictionary routeValues = null, object htmlAttributes = null)
        {
            //Example of result:          
            //<a id="btnShow" href="/Customers/ShowArtworks?customerId=1" data-ajax-update="#pnlArtworks" data-ajax-success="jsSuccess"
            //data-ajax-mode="replace" data-ajax-method="POST" data-ajax-failure="jsFailure" data-ajax-confirm="confirm" data-ajax-complete="jsComplete"
            //data-ajax-begin="jsBegin" data-ajax="true">
            //  <i class="glyphicon glyphicon-pencil"></i>
            //  <span>Edit</span>
            //</a>

            var builderI = new TagBuilder("i");
            builderI.MergeAttribute("class", "glyphicon " + glyphicon);
            string iTag = builderI.ToString(TagRenderMode.Normal);

            string spanTag = "";
            if (!string.IsNullOrEmpty(linkText))
            {
                var builderSpan = new TagBuilder("span") { InnerHtml = " " + linkText };
                spanTag = builderSpan.ToString(TagRenderMode.Normal);
            }

            //Create the "a" tag that wraps
            var builderA = new TagBuilder("a");

            var requestContext = HttpContext.Current.Request.RequestContext;
            var uh = new UrlHelper(requestContext);

            builderA.MergeAttribute("href", uh.Action(actionName, controllerName, routeValues));

            builderA.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
            builderA.MergeAttributes((ajaxOptions).ToUnobtrusiveHtmlAttributes());

            builderA.InnerHtml = iTag + spanTag;

            return new MvcHtmlString(builderA.ToString(TagRenderMode.Normal));
        }
//
///创建带有关联图标的Ajax.ActionLink
/// 
/// 
/// 
/// 
/// 
/// 
/// 
/// 
/// 
/// 
公共静态MVCHTMLSTING ImageActionLink(此AjaxHelper AjaxHelper、字符串链接文本、字符串操作名、字符串控制器名、字符串图示图标、AjaxOptions AjaxOptions、RouteValueDictionary routeValues=null、对象htmlAttributes=null)
{
//结果示例:
//
var builderI=新标记生成器(“i”);
builderI.MergeAttribute(“类”、“glyphicon”+glyphicon);
字符串iTag=builderI.ToString(TagRenderMode.Normal);
字符串spanTag=“”;
如果(!string.IsNullOrEmpty(linkText))
{
var builderSpan=new TagBuilder(“span”){InnerHtml=”“+linkText};
spanTag=builderSpan.ToString(TagRenderMode.Normal);
}
//创建包装的“a”标记
var builderA=新标记生成器(“a”);
var requestContext=HttpContext.Current.Request.requestContext;
var uh=新的UrlHelper(requestContext);
builderA.MergeAttribute(“href”,uh.Action(actionName、controllerName、routeValue));
合并属性(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
合并属性((ajaxOptions.ToUnobtrusiveHtmlAttributes());
builderA.InnerHtml=iTag+spanTag;
返回新的MvcHtmlString(builderA.ToString(TagRenderMode.Normal));
}

参见本页,请注意,不会打印背景图像,因此,如果您需要在打印时显示图像,则必须创建带有手动图像的手动链接。您可以使用Url.Action设置href