Я не могу понять, почему этот запрос Ajax не запускается правильно. Для простоты я пытался реализовать 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.