我的解决方案
由于这不能做我想要的方式,这里是一个jQuery版本的完整性:这将通过$就&变化图像切换图像,如果点击,更新数据库,以切换版本
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行动
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");
}
你不能这样做,因为HTML辅助服务器上运行,任何JavaScript变量之前多存在。你将不得不在使用javascript的客户端上执行此操作。 ImageActionLink帮助程序在做什么?这不是标准的帮手。 – 2012-03-09 13:26:18
我修改它只是根据布尔切换图像 - 所以它是一个切换图像操作链接,但是我同意我现在明白它不能完成。现在我正在重新编写此代码,以便使用带有$ ajax的jQuery。谢谢Darin – LenPopLilly 2012-03-09 14:08:13