Я добавляю эту небольшую функциональность к любимым статьям на веб-сайте MVC и испытываю трудности с ее разработкой на стороне пользовательского интерфейса. Я уже изменил обработку и базу данных изменения.Как создать кнопку Toggle с помощником Ajax на MVC
Работает так, как есть, но мне нужно обновить страницу, чтобы перейти к кнопке «Добавить избранный» в «Удалить любимый» вид значков.
Мой уродливый код из представления идет здесь.
@{
if(ViewBag.IsFavourited == true)
{
<script type="text/javascript">
$(function() {
$("#addfavourite").hide();
});
</script>
}
else
{
<script type="text/javascript">
$(function() {
$("#deletefavourite").hide();
});
</script>
}
}
<div id="deletefavourite" class="pull-right">
@Ajax.ActionLink("Unfavourite", "Delete", "Favourite", new { id = Model.BlogPostId },
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "deletefavourite", LoadingElementId = "addfavourite" }, new { @class = "deletefavourite" })
</div>
<div id="addfavourite" class="pull-right">
@Ajax.ActionLink("Add to favourites", "Add", "Favourite", new { id = Model.BlogPostId },
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "addfavourite", LoadingElementId = "deletefavourite" }, new { @class = "addfavourite" })
</div>
код из контроллера, если вы, возможно, потребуется, чтобы увидеть это, а
public ActionResult Details(int id)
{
BlogPostViewModel blogpost = waclient.GetBlogPostById(id);
Favourite favourite = blogpost.Favourites.SingleOrDefault(u => u.BlogPostBlogPostId == blogpost.BlogPostId && u.UserId == User.Identity.Name);
if (favourite != null)
{
ViewBag.IsFavourited = true;
}
else
{
ViewBag.IsFavourited = false;
}
if (blogpost == null)
{
return HttpNotFound();
}
return View(blogpost);
}
CSS, чтобы сделать ссылки в качестве иконки
<style type="text/css">
.addfavourite {
background-image: url('@Url.Content("~/Content/Images/heart-black.png")');
background-repeat: no-repeat;
display: block;
text-indent: -9999px;
height: 50px;
width: 50px;
}
.deletefavourite {
background-image: url('@Url.Content("~/Content/Images/heart-checked.png")');
background-repeat: no-repeat;
display: block;
text-indent: -9999px;
height: 50px;
width: 50px;
}
Что ваш 'Любимый/Add' и' Любимый/delete' вернуться? –
@ MK. ничего похожего сэр. что я должен вернуть? весь анкерный тег, который Ajax.ActionLink делает? – lawphotog