проблема проста. ваш селектор и идентификаторы не являются уникальными
идентификатор может быть определен только для одного элемента, один и тот же идентификатор для нескольких / одинаковых элементов вызовет эту проблему.
тег ссылки имеет общий идентификатор для всех записей , он должен быть уникальным.
сделать идентификаторы уникальными, я добавил @ post.Id с идентификаторами, это сделает каждый уникальный
<div class="reaction">
<a class="btn text-green" href="#" method="post" onclick="sendVote(@post.Id, true)"><div class="icon ion-thumbsup" id="upVotes_@post.Id">@post.UpVotes</div></a>
<a class="btn text-red" href="#" method="post" onclick="sendVote(@post.Id, false)"><div class="fa fa-thumbs-down" id="downVotes_@post.Id">@post.DownVotes</div></a>
</div>
и в вас js изменит селектор, добавив id
function sendVote(postId, isUpVote) {
var json = { postId: postId, isUpVote: isUpVote };
$.ajax({
url: "/api/votes",
type: "POST",
data: JSON.stringify(json),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#upVotes_"+postId).html(data.upVotes); // change here
$("#downVotes_"+postId).html(data.downVotes);
}
});
}
, а также для myform делают то же самое, вам не нужен идентификатор для формы, но если вы хотите просто добавить @ post.Id в id,
<form id="myForm" class="myform" asp-controller="Comment" asp-action="Create" method="post">
<input type="hidden" name="PostId" id="postId" value="@post.Id" />
<textarea name="text"></textarea>
<input type="submit" value="Submit Comment" />
</form>
и в изменении события идентификатор класса, чтобы сделать его динамичным c,
$('.myForm').each.ajaxForm(function () {
// $(this) will give you access to the specific form only
alert("You have just posted a comment");
document.location.reload(true);
});