2012-01-09 24 views
0

我想在ASP.NET MVC 3中創建一個鏈接(在Ajax中),圖像作爲背景並且沒有文本。我用這個方法手動創建一個Ajax鏈接:創建Ajax圖像的最佳方式ActionLink

<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_like」,將導入的圖像。

我的問題是,如下: 有沒有其他方式(也許是幫手)能夠輕鬆地做到這一點?

UPDATE: 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") 

它的工作原理應該如此。

回答

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"); 
}); 
0

你可以看到this的問題。

還有許多其他的例子爲它在互聯網只是谷歌「asp.net mvc的圖像跳轉鏈接」

+0

謝謝,但這些例子是爲Html(而不是Ajax)。 – 2012-01-09 20:06:22

0

內部html.Raw使用ajax.actionlink和替換ajax.acti帶圖像標籤的onlink文本。 簡單的一行代碼。 (「[replacetext]」,「Action」,「Controller」,new AjaxOptions {HttpMethod =「Post」})。ToHtmlString()。Replace(「[replacetext]」) ,「」))