我一直在努力在我的项目中设置一些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。
答案 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。