Asp.Net不包含buttonClick的定义?

我正在尝试在visual studio asp.net上构建一个程序,但每当我尝试单击一个带有OnClick事件的按钮时,我都会收到以下错误:

“CS1061:’ASP.test_aspx’不包含’buttonClick’的定义,并且没有扩展方法’buttonClick’接受类型’ASP.test_aspx’的第一个参数可以找到(你是否缺少using指令或汇编引用? )”

这是我的HTML供参考:

       

这是我的代码背后:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace MRAApplication { public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } void buttonClick(Object sender, EventArgs e) { txt1.Text = "Text"; } } } 

请保持解释尽可能简单,因为我不熟悉编码。 感谢您的帮助。 🙂

您需要将事件处理程序声明为protected:

 protected void buttonClick(Object sender, EventArgs e) { txt1.Text = "Text"; } 

标记本质上是一个inheritance自后面代码的类。 为了使成员可以访问,他们需要受到保护或公开。

你必须至少保护它:

 protected void buttonClick(Object sender, EventArgs e) { txt1.Text = "Text"; } 

C#中所有内容的默认访问权限是“您可以为该成员声明的最受限制的访问权限”,因此对于方法来说是private的。

由于aspx是您的代码隐藏类( Inherits )的子类,因此您要从aspx访问的任何方法都必须声明为protectedpublic (至少在C#中,VB.NET具有Handles )。

读:

  • 访问修饰符
  • C#中的默认访问修饰符是什么?

您需要声明您的事件处理程序,您可以通过以下几种方式执行此操作:

 protected void Page_Load(object sender, EventArgs e) { btnNote.Click += new EventHandler(btnNote_Click); } void btnAddNote_Click(object sender, EventArgs e) { // Do Stuff. } 

因此,您可以通过在Page Load声明事件来看到,您可以像上面一样使用原始void 。 否则你需要在protected声明它。

 protected void btnAddNote_Click(object sender, EventArgs e) { // Do Stuff. }