2011-10-04 60 views
1

我一直致力於在我的項目中設置一些Ajax.ActionLinks。我可以使ActionLinks工作100%,但是,當我想要使用圖像而不是文本作爲鏈接時,我的問題就出現了。使用圖片而不是文字的Ajax.ActionLink

我用了幾個其他的StackOverflow職位,並與下述溶液中走過來顯示一個ActionLink的內部的圖像:

Ajax.ActionLink("[replacethis]", "_Edit", "Account", new { id = "<#= UserId#>" }, new AjaxOptions() { UpdateTargetId = "subForm", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" }).ToHtmlString().Replace("[replacethis]", "<img src=\"" + Url.Content("~/Content/images/page-pencil-24.png") + "\" />")) 

當我使用一個正常Ajax.ActionLink,我的HTML看起來像這樣:

<a href="/ct/administration/Account/_Edit/be71fdfc-0427-46e4-8ce5-6fa7cdf639d3" data-ajax-update="#subForm" data-ajax-mode="replace" data-ajax-method="GET" data-ajax="true">Edit</a> 

當我用我的新方法,我的HTML看起來像這樣:

<a href="/ct/administration/Account/_Edit/be71fdfc-0427-46e4-8ce5-6fa7cdf639d3" data-ajax-update="#subForm" data-ajax-mode="replace" data-ajax-method="GET" data-ajax="true"> 
<img src="/ct/Content/images/page-pencil-24.png"> 
</a> 

瓦我在我的控制器中放置了一個斷點,並檢查Request.IsAjaxRequest()== true是否爲ImageActionLink爲False,但爲ActionLink爲True。

回答

0

看起來像一個常見問題 - 有一個answer here可能是有用的 - 一個自定義的HtmlHelper來做到這一點。在VB.NET中有another here

編輯:

看起來IsAjaxRequest尋找一個HTTP頭(X-請求-隨着)被設置爲XMLHttpRequest的。你可以通過一個GET/POST變力這一點,雖然這是一個有點哈克:

http://www.britishdeveloper.co.uk/2010/10/aspnet-mvc-isajaxrequest-jquery.html

然而,有趣的是,你還可以設置此爲您 表單POST的任一部分,甚至是GET查詢字符串!如 www.example.com?x-requested-with=XMLHttpRequest(區分大小寫)。這個 也將使IsAjaxRequest()返回true。

+0

謝謝,但我的問題是讓Ajax請求工作。我可以成功地顯示圖像,但它只能作爲新的請求。當我查看我的控制器中的Request.IsAjaxRequest()時,它始終是false。當我切換回使用文本(即使使用我的新功能來顯示圖像),然後請求的作品。 –

+0

道歉 - 沒有正確閱讀!看起來IsAjaxRequest查找HTTP標頭,但是如果您使用的方法不能/不能通過標頭,似乎可以使用查詢字符串強制它:http://www.britishdeveloper.co.uk/2010 /10/aspnet-mvc-isajaxrequest-jquery.html –

相關問題