节省时间点击超链接/链接按钮

时间:2012-02-15 21:29:27

标签: asp.net html c#-4.0

我将有一个列表视图,其中包含从数据库中绑定的链接。我想跟踪点击该链接的时间。这将是我可以告诉最多点击哪些链接。我尝试使用链接按钮执行此操作,但遇到了访问时颜色不会更改的问题。我怀疑我能用超链接做到这一点,因为超链接没有到达服务器。有关如何执行此操作的任何建议。

这就是我做链接按钮的方式

<asp:ListView ID="lstvTopTen" runat="server">
    <ItemTemplate>

        <tr>
            <td width="100%">
                <asp:LinkButton ID="lbtnUrlLink" runat="server" Text='<%# Bind("NewsTitle") %>' 
                    CommandArgument='<%# Bind("NewsUrl") %>' onclick="lbtnUrlLink_Click" 
                    OnDataBinding="lbtnUrlLink_DataBinding" CssClass="newslink" />
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("NewsDescriptionDisplay") %>' />
            </td>
        </tr>

    </ItemTemplate>
</asp:ListView>

这是我的css

    .newslink 
{
    display:block;
    margin: 15px 0 0 0;
    text-decoration: none;
    font-size:1.2em;
    line-height: 1.8em;
    border-bottom:1px solid #CCC;
}

.newslink:visited
{
    color: Red;
}

3 个答案:

答案 0 :(得分:1)

问题在于,当您创建LinkBut​​ton时,呈现的代码将具有 javascript函数调用,而不是指向另一个页面的URL。因此浏览器不会将这些存储到其历史记录中。此外,:visited 伪类在这种情况下不起作用,因为它仅适用于网址而不适用​​于javascript函数调用!

要解决此问题,您可能需要创建一个新的javascript函数,以便在用户点击链接时进行捕获,然后更改样式。

例如:

<script>
function ChangeLinkColour()
{
    document.getElementById('myLink').style.color = "Black";
    return false;
}
</script>

您的LinkBut​​ton将如下所示:

<asp:LinkButton ID="myLink" runat="server" Text="Click me" OnClientClick="return ChangeLinkColour();" CssClass="a"></asp:LinkButton>

答案 1 :(得分:0)

所以这就是我最终做到的。

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Bind("NewsUrl") %>' Target="_blank"
                    onclick="countClick(this.href);" CssClass="newslink" Text='<%# Bind("NewsTitle") %>' />



<script type="text/javascript" language="javascript">

    function countClick(name) {

        PageMethods.CountClick(name);

    }

</script>

答案 2 :(得分:-1)

看看这篇文章中的答案。你很近。

.newslink a:visited 
{

}

Link