Мое решение
Поскольку это не может быть сделано так, как я хотел, вот версия jQuery для полноты: это переключит изображение при нажатии, обновит БД через $ .Ajax и изменит изображение на переключенную версию
HTML
<a id="HD_FollowingLink">
<img id="HD_FollowingImage" />
</a>
jQuery & JavaScript
$('#HD_FollowingLink').click(function () {
// 'Following' Toggle Button has been clicked, get its 'id' & use ajax to toggle DB, display ajax returned data.IsFollowing (which should be toggled)
var id = $(this).attr('id');
$.ajax({
url: "/Home/ToggleEnabled/" + id,
type: "POST",
data: ({ id: id }),
success: function (data, textStatus) {
ToggleFollow(data.IsFollowing, id);
}
}); //$.ajax end
});
function ToggleFollow(IsFollowing, id) {
// Called by LoadHoverDivData & HD_FollowingLink $.Ajax calls
$('#HD_FollowingLink').attr("id", id); //Set this id so we can use it in
$('#HD_FollowingLink').click handler
if (IsFollowing == true) {
$('#HD_FollowingImage').attr("src", "../../Images/tick.png");
} else {
$('#HD_FollowingImage').attr("src", "../../Images/tick_grey.png");
}
};
MVC Action
public ActionResult ToggleEnabled(int id)
{
if (Request.IsAjaxRequest())
{
// Get if party being followed
int PID = ViewBag.ThisParty.PartyId;
var f = db.Followings.SingleOrDefault(q => q.PartyFollowedID== id && q.ThisPartyId == PID);
f.following = f.following != true;// Toggle bit
db.Entry(f).State = System.Data.EntityState.Modified;
db.SaveChanges();// Save toggled bit back to DB
return Json(new {IsFollowing = f.following });
}
return Content("Error");
}