ASP.NET Core 2.1点赞按钮AJAX实现异常问题求助
ASP.NET Core 2.1点赞按钮AJAX实现异常问题求助
我正在用ASP.NET Core 2.1开发一个折扣分类网站,想实现一个仅支持点赞(无取消点赞功能)的按钮,让访客能给喜欢的帖子点赞。后端逻辑已经写好,不存在命名空间相关问题,先给大家看控制器里的动作方法:
[HttpPost] public async Task<IActionResult> AddLike(int Id) { AdminPostModel postModel = new AdminPostModel(); postModel.Post = await _offerDbContext.Posts.SingleOrDefaultAsync(x => x.Id == Id); var UserIP = _accessor.HttpContext?.Connection?.RemoteIpAddress?.ToString(); var Myagent = Request.Headers["User-Agent"].ToString().Substring(0, 40); string MyVisit = UserIP + " " + Myagent; postModel.Visitinfos = await _offerDbContext.Visitinfos.ToListAsync(); Visitinfo visitinfo = new Visitinfo(); visitinfo.PostNumber = Id; visitinfo.Deviceinfo = MyVisit; if(postModel.Visitinfos.Any(x => x.PostNumber == visitinfo.PostNumber && x.Deviceinfo == visitinfo.Deviceinfo)) { ViewBag.Message = "Eyni elanı bir dəfədən çox bəyənə bilməzsiniz"; return Json(postModel.Post.LikeCount); } else { _offerDbContext.Visitinfos.Add(visitinfo); postModel.Post.LikeCount++; await _offerDbContext.SaveChangesAsync(); return Json(postModel.Post.LikeCount); } }
下面是视图中循环渲染帖子的部分代码:
@foreach (Post item in Model) { <div class="postcontent"> <div class="row"> <div class="col-lg-12 col-md-12"> <div class="uppart"> <h6>@item.Title</h6> </div> <div class="imgframe"> @if (item.URL != null) { <a href="@item.URL" target="_blank"> <img class="postimg" src="~/images/@item.Image"></a> } else { <a asp-action="Detailed" asp-controller="Detailed" asp-route-id="@item.Id" target="_blank"><img class="postimg" src="~/images/@item.Image"></a> } </div> <div class="posttext"> <p> @item.Description </p> <p class="formore"> <a href="@item.URL" target="_blank">ƏTRAFLI</a> </p> </div> <div class="dates"> <p class="postdate">Tarix: @item.CreatedDate.ToString("dd/MM/yyyy")</p> @if (item.ExpirationDate.ToString("dd/MM/yyyy") == "01.01.2021" || item.ExpirationDate.ToString("dd/MM/yyyy") == "01/01/2019") { <p class="expdate">Bitme tarix: Naməlum</p> } else { <p class="expdate">Bitme tarix: @item.ExpirationDate.ToString("dd/MM/yyyy") </p> } <button onclick="IncreaseLike(@item.Id)">Like</button> <p class="like"></p> </div> </div> </div>
为了点击后不刷新页面,我写了AJAX脚本:
@section Script{ <script> function IncreaseLike(id) { $.ajax({ url: "/Home/AddLike", type: "POST", data: { id: id }, }).done(function (result) { $(".like").append(result); } ) }; </script> }
现在遇到了两个问题:
- 点击点赞按钮后,点赞数不是替换原来的数字,而是在旁边新增一个数字;
- 操作会影响页面上所有帖子的点赞数,而不是只更新我点击的那个帖子。
我知道大概是因为用了类选择器.like追加内容,但不想给每个帖子都定义唯一ID,请问该怎么修改AJAX代码,让它只更新被点击帖子的点赞数,并且是替换而非追加?
数据库逻辑是正常的,用ASP.NET标签助手(asp-action和asp-controller)能正常工作,但会刷新页面,所以还是想解决AJAX的问题。麻烦大家帮我看看代码,找出JS部分的问题。
备注:内容来源于stack exchange,提问作者Farid
相关产品推荐
相关产品推荐

