我有一个循环,我想拉进5首最流行的歌曲。我想简单地捕获点击该歌曲的链接的次数。我将按钮点击计数返回到ASP.NET MVC中的Action Result方法,然后将其保存到数据库中。当我运行这个时,我得到了未定义。我也为循环中的每个记录得到这个错误,在这种情况下,这是5次。我在LINQ声明中只拿了5个。
这是我的观点:
@foreach (var song in popularsongs.OrderByDescending(song => song.Fightsong.PlayCount).Take(5))
{
<tr>
<td onclick="location.href = '@Url.Action("Details", "Team", new {id = song.Teams.TeamId})'">
<img src="@Url.Content(@song.Teams.LogoUrl)" height="35" width="35"/>
</td>
<td>@song.Fightsong.songname</td>
<td>@song.Fightsong.duration</td>
<td><a href="@Url.Content(@song.Fightsong.songurl)" class="playbtn"><i data-userid="@Url.Content(@song.Fightsong.FightSongId.ToString())" class="fa fa-play"></i></a></td>
<td><span class="counter">1</span></td>
</tr>
}
所以第二个到最后一个表列有一个FontAwesome播放按钮。我把它包裹在一个锚标签内。单击该锚标记后,对其进行计数并将其发送给我的控制器。
这是我的jQuery:
$(document).ready(function() {
$(".playbtn").click(function (e) {
var clickedUserId = $(this).data('userid');
alert(clickedUserId);
//$('.userdata-container').load('ajax/userpage_' + clickedUserId + '.html');
});
});
这是返回undefined。
我意识到当我点击按钮时,我的播放按钮图标将变为暂停,以便可以暂停播放歌曲。这将导致两次点击,但它应该只有一次。因此,如果有更好的方法来捕获它,请告知。
答案 0 :(得分:3)
data-userid
标记上有<i />
个属性。改变这个:
var clickedUserId = $(this).data('userid');
......对此:
var clickedUserId = $(this).find('i').data('userid');