【发布时间】:2009-03-26 02:25:34
【问题描述】:
我无法弄清楚为什么这个 Ajax 请求没有正确触发。为简单起见,我一直在尝试使用this tutorial 来实现 Ajax 请求。但是,我无法让我的控制器将请求识别为如此。我已经尝试将 Ajax.ActionLink 放置在要更新的 div 中(在此之外)。
使用 Response.Write 放置 Datetime,Div 内的时间会更新,而目标 div 外的时间不会(如预期的那样)。我不太熟悉 MS Ajax 库的工作原理,但从表面上看,它似乎正在更新页面的正确部分,但我的控制器无法识别请求类型,因此输出了不正确的信息。
...
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div class="chart" id="divChart">
<% Html.RenderPartial("GraphView", Model); %>
<br />
<% Response.Write(DateTime.Now); %>
<br />
</div>
<%= Ajax.ActionLink("no parameters", "MyWorkouts", new AjaxOptions{ UpdateTargetId = "divChart"}) %>
<%= Ajax.ActionLink("id parameter", "MyWorkouts", new {chtype=1},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
<%= Ajax.ActionLink("all parameters", "MyWorkouts", new {chtype=2, range=ViewData["daterangevalue"]},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
<br />
<% Response.Write(DateTime.Now); %>
<h2>
...
然后我的 ActionResult 看起来像这样......
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyWorkouts(int? chtype, int? range) {
int dateRange = 3;
// do some stuff here - left out for readability
if (Request.IsAjaxRequest()) {
if (range != null) {
dateRange = (int)range;
}
}
//do some other stuff...
if (Request.IsAjaxRequest()) {
return PartialView("GraphView", workouts);
} else {
return View(workouts);
}
}
(一切都是默认的,因为这只是一个测试页面,一旦我弄清楚了就可以实现它)。结果,我不断获得目标 div 内的完整视图。
【问题讨论】:
标签: asp.net-mvc ajax model-view-controller