asp.net点击事件中的链接按钮未触发

问题描述 投票:4回答:3
<asp:LinkButton ID="lbDownloadFile" name = "lbDownloadFile" runat="server" CausesValidation="false" 
                            onclick="lbDownloadFile_Click" />

我有这个链接按钮。点击:

protected void lbDownloadFile_Click(object sender, EventArgs e)
{    //here is my debug pointer/breakpoint
    .........................
}

但是这个事件没有解雇。我的Page_Load()事件正在触发。如何解决这个问题呢?

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        if (Session[Antrage_AnfrageSessionNames.AgntNr] == null)
        {
            Response.Redirect("../UserSessionError.aspx");
        }

        try
        {
            if (Request.QueryString["Kundennummer"].ToString() != null)
            {
                //If kundennummer exists in QueryString then stores it to further use 
                kundennummer = Request.QueryString["Kundennummer"].ToString();                    
            }
        }
        catch
        {
            kundennummer = string.Empty;
        }
    }
}

编辑:

我正在添加代码,FireFox firebug向我展示了LinkBut​​ton。

我认为自动生成的href是这里的主要问题。

c# asp.net linkbutton
3个回答
4
投票

@belogix评论很好

这是正常ASP .NET WebForms页面生命周期的一部分...每次发生回发时都会调用页面加载。在PageLoad之后你的事件应该开始......但是你在页面加载中做了什么可以阻止这种情况发生吗?

我认为你的页面加载方法做错了什么。可能是您的链接按钮是从页面加载事件重新加载。

示例错误

如果您使用网格视图以及网格内部的此链接按钮,那么您正在执行此操作

  • 写入网格绑定方法
  • 然后你在页面加载事件中调用了网格绑定方法

你的代码现在看起来像

Page_load()
{
// called here Grid bind method
} 

现在,网格重新加载每个帖子。

现在你必须设置!IsPostBack然后在!IsPostBack里面调用grid绑定方法

代码看起来像

Page_load()
{
if(!IsPostBack)
{
// called here Grid bind method

}
} 

这是你的问题。而且这是我的猜测。

请告诉我你是否使用任何控件(Gridview,listview等)


编辑

如果我没有在页面加载事件上编写任何代码,那么您的代码对我有用

看到

Default.aspx的

 <asp:LinkButton ID="lbDownloadFile" Text="he he he" name="lbDownloadFile" runat="server" CausesValidation="false" OnClientClick="lbDownloadFile_Click"
        OnClick="lbDownloadFile_Click" />

和服务器端代码是

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
      // Empty code 
    }

    protected void lbDownloadFile_Click(object sender, EventArgs e)
    {
    }
}

这对我来说很好,所以你错过了页面加载事件中的任何内容

* OnClientClickonclick没有任何问题。在pageload事件中创建的问题,

请发布您的pageload代码,否则我们无法解决。 :)

Edit 2

  • 请检查链接按钮是否为表单元素的外部。此链接按钮应位于表单元素内
  • 你的页面加载事件应该是

protected void Page_Load(**object sender, EventArgs e**) { //Code }

protected void Page_Load(){}

你错过了

object sender, EventArgs e

1
投票

我已经创建了演示项目并复制了相同的代码。它工作正常

  <asp:LinkButton ID="lbDownloadFile" name = "lbDownloadFile" Text="Click me" runat="server" CausesValidation="false" OnClientClick="lbDownloadFile_Click"
                            onclick="lbDownloadFile_Click" />

在代码后面的文件

  protected void lbDownloadFile_Click(object sender, EventArgs e)
        {    //here is my debug pointer/breakpoint
        }

我刚刚在链接按钮上添加了文字。


0
投票

只需转到按钮属性并设置即可

UseSubmitBehaviour= False
© www.soinside.com 2019 - 2024. All rights reserved.