使用图像而不是文本的Ajax.ActionLink

时间:2011-10-04 20:49:27

标签: asp.net-mvc

我一直在努力在我的项目中设置一些Ajax.ActionLinks。我可以让ActionLinks 100%工作,但是,当我想使用图像而不是文本作为链接时,我的问题出现了。

我已经使用了其他一些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。

1 个答案:

答案 0 :(得分:0)

看起来像一个常见的问题 - 可能有用的answer here - 一个自定义的HtmlHelper来执行此操作。 VB.NET中有another here

修改

看起来IsAjaxRequest查找设置为XMLHttpRequest的HTTP标头(X-Requested-With)。您可以通过传递GET / POST变量来强制执行此操作,尽管它有点hacky:

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

  

然而,有趣的是,您也可以将此设置为您的一部分   形成POST甚至是GET查询字符串!如   www.example.com?x-requested-with=XMLHttpRequest(区分大小写)。这个   也会使IsAjaxRequest()返回true。