【问题标题】:asp:linkbutton not functioning in productionasp:linkbutton 在生产中不起作用
【发布时间】:2011-08-30 17:45:15
【问题描述】:

我有一个 asp:linkbutton 如下:

<asp:LinkButton ID="lb_new" runat="server" ForeColor="White">New Item</asp:LinkButton>

Protected Sub lb_new_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lb_new.Click
    ViewState("ItemID") = "0"
    Dim myURL As String
    myURL = String.Format("D002.aspx?e={0}&i={1}", ViewState("EventID"), ViewState("ItemID"))
    Response.Redirect(myURL)
End Sub

直到最近,它一直在发挥应有的作用。但由于某种原因,它已停止生产。据我所知,它根本没有连接到它的代码隐藏(我尝试修改它以简单地更改页面上一个文本框中的文本,但它也失败了)。如果我通过视觉工作室运行网站,仍然可以工作。但是一旦我发布到我们的生产服务器,它就不再起作用了。

我被难住了——仍然在摆弄它。

如果有人遇到过这种情况,请分享。已经研究了几个小时了,现在没有想法了。

谢谢!

更新

  1. 有几个人建议缺少事件处理程序。这实际上是由“Handles”子句 (...Handles lb_new.Click) 在代码隐藏中处理的。
  2. 手动删除生产文件夹中的项目,然后重新发布。不开心。
  3. 已验证生产文件夹中的文件是新文件。
  4. 我创建了一个全新的链接按钮 -- 它也无法连接到它的代码隐藏
  5. 我在标记中添加了 Onclick=。考虑到代码隐藏中的 Handles 子句,这不是必需的。无论如何,点击仍然失败。

...仍在努力

更新2

删除了页面上的必填字段验证器,它可以正常工作。这对我来说没有意义,因为我在页面上有其他控件导致回发,而且它们一直都在工作。此外,我填写了正在验证的字段,因此(我想不到)验证器没有理由阻止回发。

现在我只需要弄清楚如何在没有必填字段验证器的情况下在页面上进行验证。

...困惑... :-)

【问题讨论】:

  • 页面上还有其他控件应该做些什么吗?
  • 尝试删除生产中的所有项目和文件并重新发布
  • 另外,检查生产服务器上的文件是否真的是新的、更改的文件,或者它们是否仍然是旧文件。
  • 缺少 OnClick 事件处理程序。
  • @James -- 实际上,不 -- 代码隐藏使用“Handles”子句。无论如何,我也尝试通过标记来做到这一点(明确调用 onclick=),但仍然没有乐趣。

标签: asp.net asp.net-3.5 linkbutton


【解决方案1】:

检查帖子上的 __EVENTTARGET 和 __EVENTARGUMENT 变量;这些应该与触发回发的按钮的值相匹配。这至少是第一个线索......

您是否升级了一些第三方 DLL 或从 .NET 3.5 升级到 .NET 4.0 或类似的东西?

HTH。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,这个帖子给我指出了答案(至少对我来说!)。只需将链接按钮的 CausesValidation 属性设置为 false,点击事件就会触发,而忽略页面上任何验证器的状态。我没有在点击事件或回发中做任何需要任何验证的事情,所以我可以忽略它。如果您也是如此,那么这很可能是您的解决方案。

    【讨论】:

      【解决方案3】:

      我认为你需要定义它的“点击”事件。

      <asp:LinkButton ID="lb_new" runat="server" ForeColor="White" OnClick="lb_new_Click">New Item</asp:LinkButton>
      

      (已编辑) 对于 VB.NET:(来自 MSDN 的示例:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.onclick(v=VS.90).aspx

      <%@ Page Language="VB" AutoEventWireup="True" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" >
      <head>
          <title>LinkButton Example</title>
      <script language="VB" runat="server">
      
            Sub LinkButton_Click(sender As Object, e As EventArgs) 
               Label1.Text = "You clicked the link button"
            End Sub
      
         </script>
      
      </head>
      <body>
      
         <form id="form1" runat="server">
      
            <h3>LinkButton Example</h3>
      
            <asp:LinkButton id="LinkButton1" 
                 Text="Click Me" 
                 Font-Names="Verdana" 
                 Font-Size="14pt" 
                 OnClick="LinkButton_Click" 
                 runat="server"/>
      
            <br />
      
            <asp:Label id="Label1" runat="server" />
      
         </form>
      
      </body>
      </html>
      

      【讨论】:

      • 那么据我所知,在 VB.NET 和 C# 中都可以给 LinkBut​​ton 提供“Click”事件。
      • @rick schott - ASP.Net 是标记,VB.Net 和 C# 都以完全相同的方式使用。
      • 感谢 KhanZeeshan。实际上,就加价而言,Vb 和 C# 之间没有区别。这是一个很好的建议——我试过了,但还是不开心。
      【解决方案4】:

      验证控件阻止了回发——或者至少,删除这些控件似乎已经解决了问题这对我来说没有意义,因为我在页面上有其他控件导致回发,而且它们一直都在工作.此外,我已经填写了正在验证的字段,所以没有理由(我能想到)验证器会阻止回发。无论如何,感谢大家的所有想法。

      【讨论】:

        猜你喜欢
        • 2015-02-06
        • 2014-01-30
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多