我一直在使用谷歌搜索/搜索:解决这个问题已有一段时间了,许多人似乎都在分享这个问题,但是我没有找到成功解决我问题的方法。
使用MVC3和Razor。
<script src="@Url.Content("~/Scripts/jquery-1.5.min.js")"type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")"type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")"type="text/javascript"></script>
<div id="AjaxTestDiv">content</div>
@Ajax.ActionLink("Update", "AjaxTester", new AjaxOptions { UpdateTargetId ="AjaxTestDiv" })
public string AjaxTester() { if (Request.IsAjaxRequest()) { return DateTime.Now.ToString(); } else { return "FAIL"; } }
我总是将“失败”返回到空白页,而不是目标div中。
编辑:还请注意,如果删除if(Request.IsAjaxRequest()),我仍然不会将任何内容返回给目标div,而是将其留空。
Edit2:查看生成的HTML,这是我的链接:
<a data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#AjaxTestDiv" href="/Area/AjaxTester">Update</a>
尝试将方法切换为GET,但无济于事。
默认情况下,ASP.NET MVC 3对所有Ajax.*助手使用不引人注目的jquery 。因此,首先摆脱所有MicrosoftAjax脚本(此无用的c** p),然后放置以下内容:
Ajax.*
<script src="@Url.Content("~/Scripts/jquery-1.5.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
然后只需在web.config中激活毫不费力的AJAX(如果尚未完成):
<appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
现在,jQuery将毫不费力地AJAXify包含那些HTML 5 data-*属性的所有链接。
data-*
甚至更好的恕我直言:
您认为:
@Html.ActionLink("Update", "AjaxTester", new { id = "mylink" })
并在单独的javascript文件AJAXify中将此锚定:
$(function() { $('#mylink').click(function() { $('#AjaxTestDiv').load(this.href); return false; }); });