Я пытаюсь заполнить ячейку 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) =>", чтобы получить идентификатор строки, чтобы всплыло правильное окно с подробностями.
Как я могу получить в столбце "Сведения" небольшую иконку, которая при нажатии выдает правильное всплывающее окно? Заранее спасибо.
Edit: вот несколько способов, которыми я пытался использовать ImageActionLink
grid.Column(... format: (item) => @Ajax.ImageActionLink( ... ) ),
Ошибка: аргумент 3: невозможно преобразовать лямбда-выражение в 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» является «типом», но используется как «переменная»