asp:linkbutton在生产中不起作用

时间:2011-08-30 17:45:16

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

我有一个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

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

我很难过 - 而且还在摆弄它。

如果有人遇到过这种情况,请分享。现在已经有几个小时了,而且我的想法不合时宜。

谢谢!

更新

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

    UPDATE2

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

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

    ...困惑......: - )

4 个答案:

答案 0 :(得分:1)

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

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

HTH。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我认为您需要定义其“点击”事件。

<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>

答案 3 :(得分:0)

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