【发布时间】:2016-01-28 11:17:11
【问题描述】:
我是 Stackoverflow 的新手,这是我的第一个问题。
我正在创建我的第一个博客网站,并且想要一个赞按钮,比如 facebook。
我的点赞按钮有 2 个问题。
它不会像具有相同数据 ID 的文章中的计数一样更新。我只能更新(这篇)文章链接
当用户喜欢/不喜欢一篇文章时,应该能够在不刷新页面的情况下点赞。这是因为它不会在不刷新页面的情况下检查数据库中是否有数据。不刷新怎么办?
控制器:
public string LikeThis(int id)
{
Article art = DB.Articles.FirstOrDefault(x => x.ID == id);
if (User.Identity.IsAuthenticated || Session["Username"] != null)
{
var Username = User.Identity.Name;
Member m = DB.Members.FirstOrDefault(x => x.Username == Username);
art.Likes++;
Like like = new Like();
like.ArticleID = id;
like.UserID = m.ID;
like.LikedDate = DateTime.Now;
like.Liked = true;
DB.Likes.Add(like);
DB.SaveChanges();
}
return art.Likes.ToString();
}
public string UnlikeThis(int id)
{
Article art = DB.Articles.FirstOrDefault(x => x.ID == id);
if (User.Identity.IsAuthenticated || Session["Username"] != null)
{
var username = User.Identity.Name;
Member m = DB.Members.FirstOrDefault(x => x.Username == username);
Like l = DB.Likes.FirstOrDefault(x => x.ArticleID == id && x.UserID == m.ID);
art.Likes--;
DB.Likes.Remove(l);
DB.SaveChanges();
}
return art.Likes.ToString();
}
查看:
<li>@{
int userid = Convert.ToInt32(Session["ID"]);
if (!User.Identity.IsAuthenticated)
{
<i class="fa fa-heart-o fa-lg"></i><span>(@art.Likes)</span>
}
else if (art.Likes1.Any(x => x.UserID == userid && x.ArticleID == art.ID) || Ajax.ViewBag.Liked == true)
{
<a href="javascript:void(0)" class="unlike" data-id="@art.ID"><i class="fa fa-heart fa-lg text-danger"></i><span>(@art.Likes)u</span></a>
}
else
{
<a href="javascript:void(0)" class="like" data-id="@art.ID"><i class="fa fa-heart-o fa-lg"></i><span>(@art.Likes)l</span></a>
}
}
</li>
阿贾克斯:
$(document).ready(function () {
//LIKE
$("a.like").click(function () {
var id = $(this).data("id");
var link = "/Article/LikeThis/" + id;
var a = $(this);
$.ajax({
type: "GET",
url: link,
success: function (result) {
a.html('<i class="fa fa-heart fa-lg text-danger"></i> (' + result + ')').removeClass("like").addClass("unlike");
}
});
});
//UNLIKE
$("a.unlike").click(function () {
var id = $(this).data("id");
var link = "/Article/UnlikeThis/" + id;
var a = $(this);
$.ajax({
type: "GET",
url: link,
success: function (result) {
a.html('<i class="fa fa-heart fa-lg text-danger"></i> (' + result + ')');
}
});
});
});
我不希望我错过任何东西。 希望你们能帮忙。
【问题讨论】:
-
那么现在点击喜欢/不喜欢按钮会发生什么?控制台中的任何错误?
-
你如何防止我按不同/喜欢 100 次?
-
可以说我不喜欢这篇文章。当我点赞时,它起作用了。但是当我点击应该“不同”的同一个按钮时,它包含一个错误
-
你可以喜欢和不喜欢 100 次。它只会在我的数据库中创建和删除相同的字段。它不会创建双字段或任何东西。
标签: jquery asp.net-mvc asp.net-mvc-5