Asp.net mvc 3 WebGrid中的MVC3 Ajax.ImageActionLink

Asp.net mvc 3 WebGrid中的MVC3 Ajax.ImageActionLink,asp.net-mvc-3,actionlink,webgrid,Asp.net Mvc 3,Actionlink,Webgrid,我正在尝试用一个图像填充WebGrid单元格,该图像将根据所选行打开一个“详细信息”弹出窗口。目前,我在“详细信息”列中有以下内容: grid.Column(header: "Details", format: (item) => @Ajax.ActionLink("pop", "GetDetails", new { id = item.FormId }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "formdetails

我正在尝试用一个图像填充WebGrid单元格,该图像将根据所选行打开一个“详细信息”弹出窗口。目前,我在“详细信息”列中有以下内容:

grid.Column(header: "Details", format: (item) => @Ajax.ActionLink("pop", "GetDetails", new { id = item.FormId }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "formdetails", InsertionMode = InsertionMode.Replace, OnSuccess = "openPopup" })
                                          , style: "colImages"),
这将打开弹出窗口,但列中有文本“pop”而不是图像

我看到很多网站都在谈论创建一个单独的“ImageActionLink”类来帮助创建带有图像的ActionLink对象。该代码如下所示:

public static class ImageActionLinkHelper
{
    public static IHtmlString 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).ToHtmlString();
        return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));
    }
} 
然而,我似乎无法让这些代码在WebGrid中工作。这主要是因为我需要“(item)=>”部分来获取行的ID,以便弹出正确的详细信息窗口

如何使“详细信息”列包含一个小图标,单击该图标时将弹出正确的弹出窗口?提前谢谢

编辑:以下是我尝试使用ImageActionLink的几种方法

grid.Column(... format: (item) => @Ajax.ImageActionLink( ... ) ),
错误:参数3:无法从“lambda表达式”转换为“System.Func”

grid.Column(... format: (item) => @(new HtmlString(@Ajax.ImageActionLink( ... ) ),
错误:逐字说明符后面应包含关键字、标识符或字符串:@

grid.Column(... format: (item) => @HtmlString(@Ajax.ImageActionLink( ... ) ),
错误:“System.Web.HtmlString”是一个“类型”,但与“变量”一样使用

grid.Column(... format: @HtmlString((item) => @Ajax.ImageActionLink( ... ) ),

错误:“System.Web.HtmlString”是一个“类型”,但像一个“变量”一样使用。

我创建了一个小复制程序,并使用以下语法为我工作。有一点很重要:您需要在视图顶部包含一个使用
ImageActionLinkHelper
类的名称空间

grid.Column(... format: @HtmlString((item) => @Ajax.ImageActionLink( ... ) ),
@using namespaceofImageActionLinkHelper
...

grid.Column(header: "Details",
                    format: (item) => 
                        @Ajax.ImageActionLink(
                            @Url.Content("~/Content/images/image.jpg"),
                            "alt of the image",
                            "GetDetails",
                            new { id = item.FormId },
                            new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "formdetails", InsertionMode = InsertionMode.Replace, OnSuccess = "openPopup" })                    
                    , style: "colImages")

您能否发布一些您如何尝试使用
ImageActionLink
方法的示例代码?