我的asp.net按钮面临一个奇怪的问题。 一切都很好,我正在使用一些ajax面板和按钮编写一个webpart,当出现一个疯狂的错误时它就差不多完成了。我的所有按钮都按照相同的方法发射,尽管我当时没有说过。
好吧,我发现这是由于一个已知问题:http://forums.asp.net/t/1567526.aspx/1
我试图删除被调用的方法,以查看其他按钮是否会返回其指定的方法,从那时起,按钮不再触发任何事件。 不再......从不...
我放回了方法,用新代码创建了一个新的webpart,恢复了我的站点的备份,重置了我的服务器,重新启动了Visual Studio,最后我试图用一个全新的代码创建一个全新的VS解决方案。我只是一个带有一个孤独的asp按钮的页面,没有任何反应......
ascx文件:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PublicationUserControl.ascx.cs" Inherits="CripmeeWebParts.Publication.PublicationUserControl" %>
<asp:Button ID="Valider" runat="server" Text="Valider" />
ascx.cs文件
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace CripmeeWebParts.Publication
{
public partial class PublicationUserControl : UserControl
{
protected override void OnLoad(EventArgs e)
{
EnsureChildControls();
base.OnLoad(e);
}
protected override void CreateChildControls()
{
base.CreateChildControls();
Valider.Click += new EventHandler(Valider_Click);
}
void Valider_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
}
我把这一切都束缚住了:
在ascx代码或CreateChildControls上附加事件,使用onCommand事件,在<form>
中放置按钮,将调试器附加到w3进程以查看它是否通过我的所有方法。
我只是出于想法...... 感谢您的阅读,任何建议都会有用。
答案 0 :(得分:1)
这是我找到的解决方案。
我仍然不知道为什么事件消失了,但我注意到只有当我从管理面板显示webpart时才会触发它们(网站操作&gt;设置&gt; webpart库&gt;点击我的自定义webpart)。如果我将我的webpart添加到测试页面,一切正常。如果其他人有同样的问题,我希望他会读到这个,避免我失去的一周......
谢谢大家的时间和答案:)
答案 1 :(得分:0)
刚刚把这个
Valider.Click += new EventHandler(Valider_Click);
在Page_Load()
或Page_Init()
中的我看不到你拨打的地方CreateChildControls()
答案 2 :(得分:0)
尝试
Valider= new Button();
Valider.Text = "Valider";
Valider.Click += new EventHandler(VAlider_Click);
Controls.add(Valider)
您的CreateChildControls 中的
答案 3 :(得分:-1)
您的按钮需要声明的OnClick事件
<asp:Button ID="Valider" runat="server" Text="Valider" OnClick="Valider_Click"/>
或在Page_Load中调用您的CreateChildControl