Итак, у меня есть кнопка «Нравится» в моем индексном представлении, которая выглядит так. Он вызывает функцию «PostLike», которая увеличивает количество лайков, вставляя новую строку в мою таблицу «лайков».
<form asp-action = "PostLike" asp-route-id = "@item.Id">
<input id = "btn" type = "submit" value = "Like" class = "btn btn-primary">
</form>
Что я хочу сделать, так это изменить значение кнопки с нравится на В отличие от при нажатии, не обновляя страницу и сохраняя значение после обновления приложения. Любые идеи? Я знаю, что для этого мне нужно использовать некоторую функцию AJAX, но я не знаю, как это должно быть реализовано.
вы можете сделать вызов ajax, чтобы проверить состояние запроса успеха или ошибки, а затем изменить значение метода успеха
ArticleLikeObj — это объект, который нужно отправить контроллеру для сохранения действия «как статья», и это класс модели представления, содержащий такие свойства, как Идентификатор статьи и текущий зарегистрированный пользователь.
аякс вызов
<input id = "@item.ArticleId" onClick = "Submit_clicked(this.id)" value = "Like" class = "btn btn-primary">
<input id = "@item.ArticleId" onClick = "Submit_clicked(this.id)" value = "Like" class = "btn btn-primary">
<input id = "@item.ArticleId" onClick = "Submit_clicked(this.id)" value = "Like" class = "btn btn-primary">
function Submit_clicked(clicked_id)
{
let ArticleLikeObj = {ArticleId:clicked_id, UserName:"Doe"};
SendRequest(ArticleLikeObj);
}
function SendRequest(ArticleLikeObj) {
$.ajax({
type: "POST",
url: '@Url.Action("action name","controller name")',
data: ArticleLikeObj,
contentType: 'application/x-www-form-urlencoded',
dataType: "json",
success: function (response) {
document.getElementById("Submit").value = "Liked";
},
error: function () {
alert("Error!");
}
});
}
@BiancaTărău Я обновил ответ, и если он решен, ответ "принять"
Проблема в том, что у меня есть кнопка «Нравится» для каждой статьи. И статьи отображаются на мой взгляд через foreachloop. Итак, как мне получить конкретные данные для каждой статьи?
@BiancaTărău Я обновил ответ, также обновите свой вопрос с предыдущим комментарием, и если он решен, ответ «принять»
Не могли бы вы объяснить мне, пожалуйста, что я должен поставить вместо "//данные"? Что такое CreateFromVM? Это часть, которую я не понял.