1

我的 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 事件,将按钮放在 a 中<form>,将调试器附加到 w3 进程以查看它是否通过我的所有方法。

我只是没有想法...感谢您的阅读,任何建议都会很有用。

4

4 回答 4

1

这是我找到的解决方案。

我仍然不知道为什么事件消失了,但我注意到只有当我从管理面板显示 web 部件时它们才被触发(站点操作>设置>webpart 库>单击我的自定义 webpart)。如果我将我的 webpart 添加到测试页面,一切正常。如果其他人有同样的问题,我希望他能阅读这篇文章并避免我失去的一周......

谢谢大家的时间和回答:)

于 2013-05-15T20:28:15.997 回答
0

把这个

Valider.Click += new EventHandler(Valider_Click);

inPage_Load()或者Page_Init()我看不到你打电话的地方CreateChildControls()

于 2013-05-06T18:42:21.017 回答
0

尝试

Valider= new Button();
Valider.Text = "Valider";
Valider.Click += new  EventHandler(VAlider_Click); 
Controls.add(Valider)

在你的 CreateChildControls

于 2013-05-06T19:06:15.497 回答
-1

您的按钮需要声明一个 OnClick 事件

<asp:Button ID="Valider" runat="server" Text="Valider" OnClick="Valider_Click"/>

或在 Page_Load 中调用您的 CreateChildControls

于 2013-05-06T18:43:05.973 回答