我有一个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运行网站,仍然有效。但是一旦我发布到我们的生产服务器,它就不再工作了。
我被难住了——而且还在摆弄它。
如果有人有这样的经历,请分享。我已经在这上面花了几个小时了,我没有主意了。
谢谢!
- 事件处理程序被一些人认为是缺失的。这实际上是由'Handles'子句(
...Handles lb_new.Click
)在代码后面处理的。 - 手动删除生产文件夹中的条目,然后重新发布。没有快乐。
- 检查生产目录下的文件是否为新文件
- 我创建了一个全新的链接按钮——它无法连接到它的代码后面
- 我添加了一个Onclick=标记。考虑到代码隐藏中的Handles子句,这应该是不必要的。无论如何,点击仍然失败。
…还在埋头苦干
更新2
删除了页面上必需的字段验证器,它可以工作。这对我来说没有意义,因为我在页面上有其他导致回发的控件,而且它们一直都在工作。而且,我已经填充了要验证的字段,所以(我能想到的)验证器没有理由阻止回发。
现在我只需要弄清楚如何在没有必要的字段验证器的情况下在页面上进行验证。
困惑…: -)
检查post上的__EVENTTARGET和__EVENTARGUMENT变量;这些值应该与触发回发的按钮中的值相匹配。这至少是第一个线索…
你是否升级了一些第三方DLL或从。net 3.5升级到。net 4.0或类似的东西?
HTH .
我也有同样的问题,这个线程给我指出了答案(至少对我来说!)。只需将链接按钮的CausesValidation属性设置为false,点击事件将触发,而忽略页面上任何验证器的状态。我没有在点击事件或回发中做任何需要任何验证的事情,所以忽略它很好。
我认为你需要定义它的"Click"事件。
<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>
验证控件阻止回发——或者至少,删除这些控件似乎已经解决了问题。这对我来说没有意义,因为我在页面上有其他导致回发的控件,而且它们一直都在工作。而且,我已经填充了要验证的字段,所以(我能想到的)验证器没有理由阻止回发。无论如何,感谢大家的想法。