ASP.NET Ajax MVC. ActionLink с изображением

72
задан tereško 13 July 2012 в 09:12
поделиться

6 ответов

Вот самое простое решение, которое я нашел:

<%= Ajax.ActionLink("[replacethis]", ...).Replace("[replacethis]", "<img src=\"/images/test.gif\" ... />" %>

Вызов Replace () используется для вставки тега img в ссылку действия. Вам просто нужно использовать текст «[replaceme]» (или любой другой безопасный текст) в качестве временного заполнителя для создания ссылки.

35
ответ дан 24 November 2019 в 12:36
поделиться

От Стивена Уолта из его проекта менеджера контактов

 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" })%> 
67
ответ дан 24 November 2019 в 12:36
поделиться

Первое решение состоит в том, чтобы использовать статический метод помощника DecodeLinkContent как следующее:

DecodeLinkContent(Html.ActionLink<Home>(c => c.Delete(item.ID), "<span class=\"redC\">X</span>",new { Class = "none left"})) 

DecodeLinkContent должен найти сначала'>' и длиться '<'; и должен заменить содержание HttpUtility. Декодируйте (содержание).

Этим решением является немного взлом, но я думаю, что это является самым легким.

0
ответ дан frantisek 24 November 2019 в 12:37
поделиться

Короткий ответ, это не возможно. Ваши опции состоят в том, чтобы записать Ваш собственный дополнительный метод, чтобы иметь ImageActionLink, не слишком трудно сделать. Или добавьте атрибут к actionLink и замените innerhtml тегом изображения.

5
ответ дан MrJavaGuy 24 November 2019 в 12:37
поделиться

Другое решение состоит в том, чтобы создать Ваш собственный дополнительный метод:

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/

6
ответ дан frantisek 24 November 2019 в 12:37
поделиться

Посмотрите версию 7 Учебное руководство менеджера по Контакту на http://asp.net/mvc. У Stephen Walther есть пример создания Ajax. ActionLink, который является изображением.

5
ответ дан 24 November 2019 в 12:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: