【问题标题】:ASP.NET : Check for click event in page_loadASP.NET:检查 page_load 中的点击事件
【发布时间】:2008-10-09 18:31:29
【问题描述】:

在c#中,如何检查页面加载方法中是否单击了链接按钮?

我需要知道它是否在触发点击事件之前被点击。

【问题讨论】:

  • 如果您的代码依赖于 OnClick 事件,那么您可以将该特定代码放在 OnPageRender 覆盖中(而不是在 Page_Load 中),因为它将在 OnClick 事件处理程序之后触发。

标签: c# asp.net .net pageload


【解决方案1】:
if( IsPostBack ) 
{
    // get the target of the post-back, will be the name of the control
    // that issued the post-back
    string eTarget = Request.Params["__EVENTTARGET"].ToString();
}

【讨论】:

  • 你测试过这个吗?应该有两个前导斜杠 - “__EVENTTARGET”
  • 有什么想法可以与更新面板一起使用吗?它似乎不起作用
【解决方案2】:

如果这不起作用。试试UseSubmitBehavior="false"

【讨论】:

    【解决方案3】:

    按钮的 UniqueID 将在 Request.Form["__EVENTTARGET"]

    【讨论】:

      【解决方案4】:

      检查请求参数 __EVENTTARGET 的值,看看它是否是有问题的链接按钮的 id。

      【讨论】:

        【解决方案5】:

        根据接受的答案和 RealSteel 的答案,这可能是一个更完整的答案。

        首先在 .aspx 中添加一个像这样的按钮:

        <asp:Button id="btnExport" runat="server" Text="Export" UseSubmitBehavior="false"/>
        

        然后在 Page_Load 方法上:

        if(IsPostBack){
           var eventTarget = Request.Params["__EVENTTARGET"]
           // Then check for the id but keep in mind that the name could be 
           // something like ctl00$ContainerName$btnExport 
           // if the button was clicked or null so take precautions against null
           // ... so it could be something like this
           var buttonClicked = eventTarget.Substring(eventTarget.LastIndexOf("$") + 1).Equals("btnExport")
        
        }
        

        【讨论】:

          【解决方案6】:

          我也遇到了同样的问题,必须在Page_Load方法中做一些逻辑判断来处理不同的事件(点击了哪个按钮)。

          我实现的手臂得到如下例子。

          前端aspx源代码(我有很多按钮,ID分别为F2、F3、F6、F12。

             <Button Style="display: none" ID="F2" runat="server" Text="F2:Cancel" OnClientClick="SeiGyo(this)" OnClick="F2_Click" />
              <Button Style="display: none" ID="F3" runat="server" Text="F3:Return" OnClientClick="SeiGyo(this)" OnClick="F3_Click" />
              <Button Style="display: none" ID="F6" runat="server" Text="F6:Run" OnClientClick="SeiGyo(this)" OnClick="F6_Click" />
              <Button Style="display: none" ID="F12" runat="server" Text="F12:Finish" OnClientClick="SeiGyo(this)" OnClick="F12_Click" />
          

          后端aspx.cs源代码,我需要做的是判断触发Page_Load时点击了哪个按钮。这似乎有点愚蠢,但有效。我希望这对其他人有所帮助

          Dictionary<string, string> dic = new Dictionary<string, string>();
          foreach(var id in new string[]{"F2","F3","F6","F12"})
          {
                 foreach (var key in Request.Params.AllKeys)
                              {
                                  if (key != null && key.ToString().Contains(id))
                                      dic.Add(id, Request[key.ToString()].ToString()); 
                              }
          }
          

          【讨论】:

            猜你喜欢
            • 2011-12-26
            • 2019-08-07
            • 1970-01-01
            • 2010-11-19
            • 1970-01-01
            • 1970-01-01
            • 2011-11-04
            • 2014-10-17
            • 1970-01-01
            相关资源
            最近更新 更多