【问题标题】:Href on asp button with Eval带有 Eval 的 asp 按钮上的 Href
【发布时间】:2014-06-12 09:34:51
【问题描述】:

我正在尝试向我的 ASP.NET 按钮添加一个链接,以将用户重定向到另一个页面。

这是一个有效的 html 按钮的代码

<a href="RentArticle.aspx?id=<%# Eval("id") %>">Rent article</a>

但我想要一个功能完全相同的 ASP 按钮。 我已经四处搜索,但没有任何效果。

这是我尝试过的“解决方案”

失败的解决方案 #1

<a href="RentArticle.aspx?id=<%# Eval("id") %>"><asp:Button ID="btnRentArticle" runat="server" Text="Rent article" CssClass="mybutton" /></a>

结果:浏览器开始加载,但很快停止加载,仍然显示相同的页面。

失败的解决方案 #2(结合 Javascript)

<script type="text/javascript">
    function redirect(articleid) { location.href = 'RentArticle.aspx?id=' + articleid; }
</script>
<asp:Button ID="btnRentArticle" runat="server" onclientclick='redirect(<%#Eval("id")%>)' Text="Rent article" CssClass="mybutton" />

结果:与失败的解决方案 #1 相同

我做错了什么还是错过了什么?

【问题讨论】:

    标签: javascript asp.net button eval href


    【解决方案1】:

    #Eval 用于数据绑定表达式,其中有一个容器和一个数据项。 (例如,Repeater 或 GridView 中的一行。)如果您的按钮不是这种情况,则需要以其他方式获取 id。例如,声明一个隐藏字段,在代码隐藏中设置值,然后使用 javascript 检索该值。

    【讨论】:

    • @Matt,是的。实际上,我注意到在您的前两个示例中,您嵌套了双引号,例如 href="RentArticle.aspx?id=&lt;%# Eval("id") %&gt;",这是行不通的。将外引号设为单引号。
    【解决方案2】:

    工作示例和最后一个示例之间的区别在于最后一个将回发。您可以通过将return false 添加到点击处理程序来防止这种情况:

    onclientclick='redirect(&lt;%#Eval("id")%&gt;);return false'

    【讨论】:

    • 那也没用。结果与所有其他解决方案相同。我什至添加了一个 ;到返回假。结果相同。猜猜我要使用 html 按钮并制作 css 的副本
    • 看看如果你注释掉 javascript 函数中的行会发生什么,所以它只是说function redirect(articleid) {alert(articleid);}
    • 我刚刚复制了您的失败解决方案#2,只要您添加return false,它就可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 2014-07-06
    • 2014-12-05
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2012-09-13
    • 2017-11-14
    相关资源
    最近更新 更多