我想用一个图像填充一个WebGrid单元格,该图像将打开一个基于选中哪一行的“Details”弹出窗口。目前,我有这样的细节列:MVC3 WebGrid中的Ajax.ImageActionLink
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"),
这打开了弹出很好,但有文“流行”之列,而不是图像。
我见过很多网站正在讨论创建一个单独的“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'是‘类型’,但使用类似‘变量’
你可以张贴一些示例代码,你如何试图使用'ImageActionLink'方法? – nemesv
已编辑原创帖子 –