加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC 3 Ajax.ActionLink不能正常工作

发布时间:2020-12-15 19:51:28 所属栏目:asp.Net 来源:网络整理
导读:我正在玩一些基于MvcMusicStore示例的商店,并且在使用MVC3 Ajax.ActionLink / Ajax.RouteLink助手时遇到了一些问题.问题是它根本不生成Ajax请求(Request.IsAjaxRequest()== false).我使用Ajax.BeginForm / Ajax.BeginRouteForm生成的表单虽然很好用. 配置:
我正在玩一些基于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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读