【问题标题】:ASP.NET 2.0 - Need to programmatically click a linkASP.NET 2.0 - 需要以编程方式单击链接
【发布时间】:2010-10-16 22:32:49
【问题描述】:

有没有办法以编程方式单击链接,使其具有与用户单击链接相同的效果?

例子:

我有一个 ASP.NET 链接按钮:

<asp:LinkButton id="lnkExport" runat="server" CssClass="navclass">Export</asp:LinkButton>

我在侧边栏上有一个链接指向具有此链接按钮的 .aspx 页面。由于各种原因,在页面刷新之前我无法执行 LinkBut​​ton 的代码——所以我正在寻找一种方法,在页面完全加载后在我的代码中强制单击此 LinkBut​​ton。有没有一种简单/可行的方法来实现这一点?如果涉及触发事件,请尽可能提供代码示例。谢谢。

【问题讨论】:

  • 我忘了添加...我在我的代码隐藏中使用 C#。
  • 我正在使用 HTTP 响应对象下载文件,因此重定向不是一个选项。此外,指向此页面的链接不是由我的应用程序生成的,而是由 XML 文件生成链接的外部应用程序。

标签: c# asp.net hyperlink


【解决方案1】:

在链接上以编程方式触发点击事件将触发“onclick”事件,但不会触发默认操作(href)。

而且由于链接按钮是作为 href 出现的,所以您可以尝试使用 Javascript 来执行此操作。

var lnkExport = document.getElementById('<%= lnkExport.ClientID %>');
if(lnkExport){
   window.location = lnkExport.href;
}

【讨论】:

    【解决方案2】:

    我当然认为,存在一个设计和实现缺陷,迫使您按照您的描述得出结论。

    好吧,调用点击事件只是执行事件注册方法。

    所以,我能想到的最糟糕的建议是,只需在您希望发生点击事件的时间点调用该函数,

    lnkExport_Click(lnkExport, new EventArgs());

    【讨论】:

      【解决方案3】:

      Rashack 的帖子展示了如何做到这一点。你可以用javascript来做。

      
      function ClickLink() {
        document.getElementById('').click();
      }
      

      如果您希望它在其他事件后触发,您可以在 c# 中添加代码,以便在页面加载时在客户端添加对该函数的调用。

      
      Page.ClientScript.RegisterStartupScript(
        this.getType(), 
        "clickLink", 
        "ClickLink();",
        true);
      

      【讨论】:

      • 这可以点击链接,但没有解决我遇到的问题。最终我认为没有直接的解决方案——但我发现如果你打开一个新对话框,下载的文件链接到它,它几乎同样有效(除了必须关闭的额外对话框窗口)。
      • 很好的解决方案。我想:this.getType() 应该是 this.GetType()
      【解决方案4】:

      如果您只是想以编程方式单击该链接,我不确定您为什么需要加载页面。我建议在服务器端使用 Response.Redirect() 将它们重定向到该页面。不确定是否还有其他情有可原的原因这种简单的方法不起作用...

      --马特

      【讨论】:

        【解决方案5】:

        如果我明白你在说什么:

        <asp:LinkButton id="lnkExport" runat="server" CssClass="navclass" onclick="lnkExport_Click">Export</asp:LinkButton>
        

        然后在您的代码隐藏中或在您需要时调用以下...

        lnkExport_Click( null, null );
        

        并确保您已连接好 lnkExport_Click。

        protected void lnkExport_Click( object sender, EventArgs e )
        {
        //DO Whatever here
        }
        

        【讨论】:

          【解决方案6】:
          <button onclick="document.getElementById('<%=this.lnkExport.ClienID%>').click()">
           click me</button>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-23
            • 1970-01-01
            • 2015-10-19
            • 2016-08-07
            • 1970-01-01
            • 2010-10-28
            • 1970-01-01
            • 2011-07-15
            相关资源
            最近更新 更多