创建Ajax Image ActionLink的最佳方法

时间:2012-01-09 19:15:15

标签: ajax asp.net-mvc-3 razor

我想在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标签调用将导入图像的CSS“icon icon_like”类。

我的问题如下: 没有别的方法(也许是助手)能够轻松地做到这一点吗?

更新 gdoron将我重定向到一个很好的链接,但它不是我想要的(没有Ajax支持)。对我来说,第一个torm的答案更好,我只做了一些改动以使其普及:

首先在帮助程序中它首先支持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 :(得分:0)

您可以看到this问题。

在互联网上还有很多其他的例子只是google“asp.net mvc image action link”

答案 1 :(得分:0)

为了符合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");
});

答案 2 :(得分:0)

在html.Raw中使用ajax.actionlink并用图像标记替换ajax.actionlink文本。 简单的一行代码。

@ Html.Raw(@ Ajax.ActionLink(“[replacetext]”,“Action”,“Controller”,new AjaxOptions {HttpMethod =“Post”})。ToHtmlString()。Replace(“[replacetext]”, “”))