繁体   English   中英

ASP.NET Core MVC-通过AJAX调用更改Bootstrap按钮

[英]ASP.NET Core MVC - Bootstrap button change with AJAX call

我目前有这个按钮

@model IEnumerable<bytme.Models.Item>
...
    @foreach (var item in Model)
    {
        @if(ie++ < 21)
        {
         ...
         <a onclick="AddToWishList(@item.id)" class="btn btn-default">
               <span style="color:#8F6B93;" class="glyphicon glyphicon-heart-empty"></span>
         </a>
         ...
        }
    }

这个AJAX调用:

function AddToWishList(item_id) {

        $.ajax({
            type: "POST",
            data: {
                itm_id: item_id
            },
            url: "/WishList/AddToWishList",
            success: function (data) {
                //
            },
            error: function () {
                return "error";
            }
        });
}

该按钮是一个空虚的心,但是我希望每当调用AJAX url时就将其填充。 我还希望网址"/WishList/RemoveFromWishList"在填满并再次单击时再次清空心脏。 我该怎么做呢?

如果需要更多信息,一些额外的代码:

AddToWishList(来自WishlistController):

public async Task<ActionResult> AddToWishList(int itm_id, int recordId)
        {
            string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var wishMain = _context.WishMains.Where(w => w.user_ad == userId).FirstOrDefault();

            if (wishMain != null)
            {
                recordId = wishMain.id;
            }
            else
            {
                WishMains wish = new WishMains();
                wish.user_ad = userId;
                wish.dt_created = DateTime.Now;
                _context.Add(wish);
                await _context.SaveChangesAsync();

                recordId = wish.id;
            }

            var check = (from m in _context.WishLines
                         where m.itm_id == itm_id && m.Wishmain_id == recordId
                         select m).FirstOrDefault();

            if (check == null)
            {
                WishLines wishline = new WishLines();
                wishline.itm_id = itm_id;
                wishline.Wishmain_id = recordId;
                wishline.dt_created = DateTime.Now;

                _context.Add(wishline);
                await _context.SaveChangesAsync();
            }

            return RedirectToAction(nameof(Index));
        }

RemoveFromWishList(来自WishlistController):

public async Task<ActionResult> RemoveFromWishList(int ordline_id)
        {
            var result = (from wishlines in _context.WishLines
                          where wishlines.id == ordline_id
                          select wishlines).FirstOrDefault();
            if (result != null)
            {
                _context.WishLines.Remove(result);
                await _context.SaveChangesAsync();
            }
            else
            {
                ViewBag.ErrorMessage = "Product cannot be removed!";
            }

            return RedirectToAction(nameof(Index));
        }

我设法做到这一点:

HTML

<a onclick="AddToWishList(@item.id)" class="btn btn-default swapHeart">
   <span style="color:#8F6B93;" class="glyphicon glyphicon-heart-empty"></span>
</a>

jQuery和AJAX

<script src="~/lib/jquery/dist/jquery.min.js">
</script>
<script>
    jQuery(function ($) {
        $('.swapHeart').on('click', function () {
            var $el = $(this),
                textNode = this.lastChild;
            $el.find('span').toggleClass('glyphicon-heart glyphicon-heart-empty');
        });
    });
</script>
<script>
    function AddToWishList(item_id) {
        $.ajax({
            type: "POST",
            data: {
                itm_id: item_id
            },
            url: "/WishList/AddToWishList",
            error: function () {
                return "error";
            }
        });
    }
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM