Я играю с каким-то магазином на основе примера MvcMusicStore и у меня возникают проблемы с помощниками MVC3 Ajax.ActionLink / Ajax.RouteLink. Проблема в том, что он просто не генерирует Ajax-запрос (Request.IsAjaxRequest () == false). Формы, которые я генерирую, используя Ajax.BeginForm / Ajax.BeginRouteForm, работают хорошо.
Config:
<appSettings>
<add key="ClientValidationEnabled"
value="true"/>
<add key="UnobtrusiveJavaScriptEnabled"
value="true"/>
</appSettings>
Сценарии
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Ссылка:
@Ajax.ActionLink("show cart", "Show", "Cart", new AjaxOptions() { OnSuccess = "handleSuccess", HttpMethod = "Get", OnFailure = "handleFailure" })
Создать HTML:
<a data-ajax="true" data-ajax-failure="handleFailure" data-ajax-method="Get" data-ajax-success="handleSuccess" href="/Cart/Show">show cart</a>
Как уже говорилось, это прекрасно работает:
@using (Ajax.BeginForm(
"Show",
new { controller = "Cart" },
new AjaxOptions
{
OnSuccess = "handleSuccess",
OnFailure = "handleFailure"
}))
{
<input type="submit" class="button" />
}
Действие выглядит так:
[Authorize]
public ActionResult Show()
{
if (Request.IsAjaxRequest())
{
ViewBag.CartItems = ShoppingCart.GetCart(this)
.Items;
return Json(new AjaxResultViewModel()
{
Content = RenderPartialViewToString(),
UpdateTargetSelector = "#dialog",
InsertionMode = InsertionMode.InsertBefore
}, JsonRequestBehavior.AllowGet);
}
ViewBag.Exception = new NotSupportedException();
return View("Error");
}
Я уже некоторое время искал и не мог найти причину такого поведения, может быть, кто-то может мне помочь?
С наилучшими пожеланиями!