Лучший способ создать Ajax Image ActionLink - PullRequest
0 голосов
/ 09 января 2012

Я хочу создать в ASP.NET MVC 3 ссылку (в Ajax) с изображением в качестве фона и без текста. Я использую этот метод, который создает ссылку ajax вручную:

<a href="@Url.Action("Like", new { controller = "Article", like = 1, id = Model.Item1.ID })" data-ajax-update="#result" data-ajax-mode="replace" data-ajax="true"><div class="icon icon_like"></div></a>

Тег div вызывает класс «icon icon_like» CSS, который будет импортировать изображение.

Мой вопрос следующий: Нет другого способа (может быть, помощника) сделать это легко?

UPDATE: Гдорон перенаправил меня на хорошую ссылку, но это было не совсем то, что я хотел (без поддержки Ajax). Для меня первый ответ лучше, я сделал несколько изменений, чтобы сделать его универсальным:

Сначала в помощнике он поддерживает теперь routeValues ​​и изменяет раздел, который должен быть обновлен

@helper AjaxImageLink(string action, Object routeValues, string icon_name, string sectionToUpdate = "#result"){
    <a href="@Url.Action(action, @routeValues)" data-ajax-update="@sectionToUpdate" data-ajax-mode="replace" data-ajax="true"><div class="icon @icon_name"></div></a>
}

Об использовании того помощника, который я использую для рассматриваемого примера:

@AjaxImageLink("Like", new { controller = "Article", like = 1, id = Model.Item1.ID }, "icon_like")

И все работает как надо.

Ответы [ 3 ]

0 голосов
/ 09 января 2012

Чтобы соответствовать принципу DRY, вы можете легко обернуть свою структуру ссылок в встроенный помощник, такой как:

@helper AjaxLink(string action, string controller, string icon_name){
    <a href="@Url.Action(action, new { controller = controller, like = 1, id = Model.Item1.ID })" data-ajax-update="#result" data-ajax-mode="replace" data-ajax="true"><div class="icon @icon_name"></div></a>
}

другим способом было бы перенести часть ajax на ненавязчивое повторное использование jquery-связывания:

<a href="@Url.Action("Like", new { controller = "Article", like = 1, id = Model.Item1.ID })" class="ajaxLink" ><div class="icon icon_like"></div></a>

$('.ajaxLink').click(function (e) {
    e.preventDefault();
    $("#result").load($(this).attr("href");
});
0 голосов
/ 17 октября 2013

используйте ajax.actionlink внутри html.Raw и замените текст ajax.actionlink тегом image. простой однострочный код.

@Html.Raw (@ Ajax.ActionLink ("[replacetext]", "Action", "Controller", новые AjaxOptions {HttpMethod = "Post"}). ToHtmlString (). Replace ("[replacetext]", ""))

0 голосов
/ 09 января 2012

Вы можете увидеть этот вопрос.

Есть много других примеров этого в интернете, просто Google "asp.net mvc image action link"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...