Вот самое простое решение, которое я нашел:
<%= Ajax.ActionLink("[replacethis]", ...).Replace("[replacethis]", "<img src=\"/images/test.gif\" ... />" %>
Вызов Replace () используется для вставки тега img в ссылку действия. Вам просто нужно использовать текст «[replaceme]» (или любой другой безопасный текст) в качестве временного заполнителя для создания ссылки.
От Стивена Уолта из его проекта менеджера контактов
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-файл:
<%= Ajax.ImageActionLink("../../Content/Delete.png", "Delete", "Delete", new { id = item.Id }, new AjaxOptions { Confirm = "Delete contact?", HttpMethod = "Delete", UpdateTargetId = "divContactList" })%>
Первое решение состоит в том, чтобы использовать статический метод помощника DecodeLinkContent как следующее:
DecodeLinkContent(Html.ActionLink<Home>(c => c.Delete(item.ID), "<span class=\"redC\">X</span>",new { Class = "none left"}))
DecodeLinkContent должен найти сначала'>' и длиться '<'; и должен заменить содержание HttpUtility. Декодируйте (содержание).
Этим решением является немного взлом, но я думаю, что это является самым легким.
Короткий ответ, это не возможно. Ваши опции состоят в том, чтобы записать Ваш собственный дополнительный метод, чтобы иметь ImageActionLink, не слишком трудно сделать. Или добавьте атрибут к actionLink и замените innerhtml тегом изображения.
Другое решение состоит в том, чтобы создать Ваш собственный дополнительный метод:
ActionLink<TController>(this HtmlHelper helper, Expression<Action<TController>> action, string linkText, object htmlAttributes, LinkOptions options)
и поскольку последний параметр является перечислением LinkOptions
[Flags]
public enum LinkOptions
{
PlainContent = 0,
EncodeContent = 1,
}
, и затем можно использовать его следующим образом:
Html.ActionLink<Car>(
c => c.Delete(item.ID), "<span class=\"redC\">X</span>",
new { Class = "none left" },
LinkOptions.PlainContent)
я размещу целое описание этого решения в моем блоге: http://fknet.wordpress.com/
Посмотрите версию 7 Учебное руководство менеджера по Контакту на http://asp.net/mvc. У Stephen Walther есть пример создания Ajax. ActionLink, который является изображением.