You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC拆分控制器操作:点赞点踩功能问题求助

详情页点赞功能生效但点踩失效,需拆分独立控制器操作

我有一个依赖卡片展示数据的网站,Detail操作负责展示单条数据详情。详情页内的点赞(Like)和点踩(Dislike)按钮需要基于该数据操作。我尝试用同一个Detail方法里的if语句实现两个功能,但只有点赞生效,点踩完全失效。现在我想给Like和Dislike创建独立的控制器操作,以下是我目前的代码:

原控制器代码(DetailController.cs)

public async Task<IActionResult> Detail(int id, bool like, bool dislike)
{
    Post post = await _postInterface.GetByIdAsync(id);

    // Likes
    if (like)
    {
        post.Like += 1;

        _context.Update(post);
        await _context.SaveChangesAsync();
    }

    // Dislikes
    if (dislike)
    {
        post.Dislike += 1;

        _context.Update(post);
        await _context.SaveChangesAsync();
    }

    return View(post);
}

已定位点踩失效的原因,附前端相关代码:

前端页面代码(Details.cshtml)

<div class="btn-group" role="group" id="UserVotes" pt-1">

    <!-- Like -->
    <input type="checkbox" class="btn-check" id="Likebtn" name="Votegroup[]" autocomplete="off">
    <a asp-controller="Post" asp-action="Detail" class="btn btn-outline-success btn-sm shadow-none" for="Likebtn" onclick="Like(@Model.Id, true)">@Model.Like Likes</a>

    <!-- Dislike -->
    <input type="checkbox" class="btn-check" id="Dislikebtn" name="Votegroup[]" autocomplete="off">
    <a asp-controller="Post" asp-action="Detail" class="btn btn-outline-danger btn-sm shadow-none" for="Dislikebtn" onclick="Dislike(@Model.Id, true)">@Model.Dislike Dislikes</a>

</div>

前端交互脚本(like-dislike.js)

function Like(id, like) {
    $.ajax({
        type: "POST",
        data: { id: id, like: like },
        url: 'Like',
    }).done(function (result) {
        var html = ""
        for (var i = 0; i < result.length; i++) {
            html += '<tr><td>' + result[i].id + '</td><td>' + result[i].Like + '</td><td><button onclick="Like(' + result[i].id + ',true)">Like</button></td></tr>'
        }
        document.getElementById("UserVotes").innerHTML = html;
    });
}

function Disike(id, dislike) {
    $.ajax({
        type: "POST",
        data: { id: id, dislike: dislike },
        url: 'Disike',
    }).done(function (result) {
        var html = ""
        for (var i = 0; i < result.length; i++) {
            html += '<tr><td>' + result[i].id + '</td><td>' + result[i].Dislike + '</td><td><button onclick="Dislike(' + result[i].id + ',true)">Dislikes</button></td></tr>'
        }
        document.getElementById("UserVotes").innerHTML = html;
    });
}

问题已解决

已完成独立控制器操作的改造,问题解决,感谢支持。

内容的提问来源于stack exchange,提问作者ZNAXNOR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:53:24