gpt4 book ai didi

asp.net-mvc - MVC 3 Ajax.ActionLink 不起作用

转载 作者:行者123 更新时间:2023-12-02 08:38:27 25 4
gpt4 key购买 nike

我正在使用一些基于 MvcMusicStore 示例的商店,并且在使用 MVC3 Ajax.ActionLink/Ajax.RouteLink 帮助程序时遇到一些问题。问题是它根本不生成 Ajax 请求 (Request.IsAjaxRequest() == false)。我使用 Ajax.BeginForm/Ajax.BeginRouteForm 生成的表单运行良好。

配置:

<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");
}

我已经搜索了一段时间,但找不到这种行为的原因,也许有人可以帮助我?

最诚挚的问候!

最佳答案

在靠近底部的 _layout.cshtml 上的新 MVC4 模板中,有一个 @Scripts.Render("~/bundles/jquery")

我必须包括@Scripts.Render("~/bundles/jqueryval") 这是 Ajax 库

这解决了我使用索引页进行完整回发时遇到的问题。我的操作链接代码:

<div id="timeDisplay">
@Ajax.ActionLink("Click to display server time", "Time", new AjaxOptions { HttpMethod="GET",UpdateTargetId="timeDisplay"});
</div>

关于asp.net-mvc - MVC 3 Ajax.ActionLink 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com