2012-03-09 57 views
0

在下面的ActionLink的ID来切换图像要设定PartyId &有两个jQuery的IsFollowing瓦尔通行证通过jQuery瓦尔到Ajax.ActionLink通过jQuery和MVC

@Ajax.ImageActionLink("ToggleEnabled", "Following Status", 
            new { id = PartyId }, 
            new AjaxOptions 
            { 
             UpdateTargetId = "ti" + PartyId, 
             InsertionMode = InsertionMode.Replace, 
            }, 
            IsFollowing, 
            "../../Images/tick.png", 
            "../../Images/tick_grey.png", 
            PartyId) 

我怎样才能做到这一点?

+0

你不能这样做,因为HTML辅助服务器上运行,任何JavaScript变量之前多存在。你将不得不在使用javascript的客户端上执行此操作。 ImageActionLink帮助程序在做什么?这不是标准的帮手。 – 2012-03-09 13:26:18

+0

我修改它只是根据布尔切换图像 - 所以它是一个切换图像操作链接,但是我同意我现在明白它不能完成。现在我正在重新编写此代码,以便使用带有$ ajax的jQuery。谢谢Darin – LenPopLilly 2012-03-09 14:08:13

回答

1

我的解决方案

由于这不能做我想要的方式,这里是一个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"); 
}