首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带图像的ASP.NET MVC Ajax.ActionLink

带图像的ASP.NET MVC Ajax.ActionLink
EN

Stack Overflow用户
提问于 2008-12-04 18:40:43
回答 13查看 52.8K关注 0票数 73

有没有办法让一张图片充当ajax动作链接?我只能使用文本让它工作。谢谢你的帮忙!

EN

回答 13

Stack Overflow用户

发布于 2009-11-02 03:25:35

来自斯蒂芬·沃尔特,来自他的Contact manger project

代码语言:javascript
复制
 public static class ImageActionLinkHelper
{

    public static string ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, object routeValues, AjaxOptions ajaxOptions)
    {
        var builder = new TagBuilder("img");
        builder.MergeAttribute("src", imageUrl);
        builder.MergeAttribute("alt", altText);
        var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions);
        return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));
    }

}

您现在可以键入您的aspx文件:

代码语言:javascript
复制
<%= Ajax.ImageActionLink("../../Content/Delete.png", "Delete", "Delete", new { id = item.Id }, new AjaxOptions { Confirm = "Delete contact?", HttpMethod = "Delete", UpdateTargetId = "divContactList" })%> 
票数 67
EN

Stack Overflow用户

发布于 2009-01-16 16:50:44

另一种解决方案是创建自己的扩展方法:

代码语言:javascript
复制
ActionLink<TController>(this HtmlHelper helper, Expression<Action<TController>> action, string linkText, object htmlAttributes, LinkOptions options)

最后一个参数是枚举LinkOptions

代码语言:javascript
复制
[Flags]
public enum LinkOptions
{
    PlainContent = 0,
    EncodeContent = 1,
}

然后,您可以按如下方式使用它:

代码语言:javascript
复制
Html.ActionLink<Car>(
     c => c.Delete(item.ID), "<span class=\"redC\">X</span>",
     new { Class = "none left" }, 
     LinkOptions.PlainContent)

我将在我的博客上发布对此解决方案的完整描述:http://fknet.wordpress.com/

票数 6
EN

Stack Overflow用户

发布于 2008-12-04 19:07:12

简而言之,这是不可能的。您的选择是编写自己的扩展方法来拥有一个ImageActionLink,这不是很难做到。或者向actionLink添加一个属性,并用图像标记替换innerhtml。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/341649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档