首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jquery调用控制器操作

使用Jquery调用控制器操作
EN

Stack Overflow用户
提问于 2014-11-29 18:49:37
回答 3查看 1.7K关注 0票数 0

当用户向购物车添加项目时,我试图重新加载特定的“div”()。我有一些Jquery,我想在click事件上运行它。它需要调用post操作(正在工作),然后重新加载“重新加载”div中的所有内容(仅是呈现操作)。

这个重新加载部分似乎也工作,但不只是重新加载div,但也是当前页面的一部分。考虑到这一点,肯定是jquery不正确。对我所做的错事的任何帮助都将不胜感激。

我将尝试只包括以下必要的代码:

在布局视图中加载部分视图:

代码语言:javascript
复制
<div id="reload">
    @{Html.RenderAction("_PartialView","Controller");}
</div>

链接用户单击。单击Jquery侦听的事件:

代码语言:javascript
复制
<p class="button">
    <a href="#" class="AddToCart" data-id="@item.ItemId"> Add To Basket</a>  
</p>

Jquery对click事件调用的操作:

代码语言:javascript
复制
[ChildActionOnly]
        public ActionResult _CartSummary()
        {
            var cart = ShoppingCart.GetCart(this.HttpContext);

            ViewData["CartCount"] = cart.GetCount();

            return PartialView("_CartSummary.cshtml");
        }

JQuery调用单击事件:

代码语言:javascript
复制
    $(function () {
    $(".AddToCart").click(function () {
        var addToCart = $(this).attr("data-id");
        if (addToCart != '') {
            $.post("/ShoppingCart/AddToCart", { "id": addToCart }).success(function() {
                $("#cartSummary").fadeOut();
                $("#cartSummary").fadeIn().load('@Url.Action("_CartSummary","ShoppingCart")');
            });
            return false;
        };
    });
});

当调用上面的JQuery时,$("#cartSummary").fadeIn().load('@Url.Action("_CartSummary","ShoppingCart")')返回的url是localhost/Store/@Url.Action(%22_CartSummary%22,%22ShoppingCart%22。正如预期的那样,未找到此url。正确的url应该是localhost/ShoppingCart/_CartSummary。似乎@Url.Action没有被处理,只是作为该操作的名称传入。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-30 17:50:16

因此,在玩这个问题,并使用提供的答案作为基础,我有一个工作的解决方案,我很满意。这绝对不是最干净的方法,我相信,但结果是我想要的。希望这能对未来的人有所帮助。

视图中的Jquery:

代码语言:javascript
复制
<script>
$(function () {
    //On click of .AddToCart
    $(".AddToCart").click(function () {
        // Get the id from the link
        var addToCart = $(this).attr("data-id");
        if (addToCart != '') {
            $.post("/ShoppingCart/AddToCart", { "id": addToCart }).success(function (data) {
                $('#cart-status').fadeIn().html('Cart  ' + '<span class="badge">' + data.CartCount + '</span>');
            });
            return false;
        };
    });
});
</script>

部分视图中的代码

代码语言:javascript
复制
<ul class="nav navbar-nav" style="margin-top:-15px;">
    <li><a href="/ShoppingCart?Length=12" id="cart-status">Cart  <span class="badge">@ViewData["CartCount"]</span></a></li>
</ul>

最后,控制器:

代码语言:javascript
复制
public ActionResult AddToCart(int id)
        {
            //Code...

            var results = new ViewModel
                {
                    Message = Server.HtmlEncode(addedItemName) +
                        " has been Added to your shopping cart.",
                    CartCount = cart.GetCount(),
                };
            return Json(results);
        }
票数 0
EN

Stack Overflow用户

发布于 2014-11-29 18:58:42

当您使用load时,它需要指向一个部分。喜欢

代码语言:javascript
复制
$("#cartSummary").fadeIn().load('@Url.Action("_PartialView", "Controller")');

最后,当您发送一个$.post()时,请记住它是异步的。更好的办法可能是:

代码语言:javascript
复制
$.post("/ShoppingCart/AddToCart", { "id": addToCart }).success(function () {
    $("#cartSummary").fadeIn().load('@Url.Action("_PartialView", "Controller"'));
});

如果您的jQuery是在一个单独的文件中(应该是这样),那么在*.cshtml中这样做。

代码语言:javascript
复制
<div id="cartSummary" data-url="@Url.Action("_PartialView", "Controller")"></div>

在jQuery中:

代码语言:javascript
复制
$("#cartSummary").fadeIn().load($("#cartSummary").data("url"));

基本技术是将HTML视为存储库。这就是我们存储来自服务器的所有动态信息的地方。

票数 1
EN

Stack Overflow用户

发布于 2014-11-29 19:06:04

代码语言:javascript
复制
$(document).ready(function () {
    $(".AddToCart").click(function () {
        var addToCart = $(this).attr("data-id");
        if (addToCart != '') 
        {
            $.post("/ShoppingCart/AddToCart", { "id": addToCart },function(data){
                 $("#cartSummary").html(data);
                 $("#cartSummary").fadeOut();
                 return false;
            }); 

        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27205734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档