Asp.Net не содержит определения для buttonClick?

Я пытаюсь создать программу на visual studio asp.net но всякий раз, когда я пытаюсь нажать кнопку с событием OnClick, я получаю следующую ошибку:

"CS1061:' ASP.test_aspx "не содержит определения для "buttonClick" и никакого метода расширения "buttonClick", принимающего первый аргумент типа " ASP.test_aspx' может быть найден (отсутствует помощью директивы или ссылку на сборку?)"

вот мой HTML для справки:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="MRAApplication.test" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button id="b1" Text="Submit" runat="server" OnClick="buttonClick" />
    <asp:TextBox id="txt1" runat="server" />
</div>
</form>
</body>
</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";
    }
}
}

пожалуйста, держите объяснения как можно проще, поскольку я новичок в кодировании. Спасибо за любую помощь. :)

3 ответов


вам нужно объявить обработчик событий защищенным:

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

разметка по существу является классом, который наследуется от кода позади. Для того чтобы члены были доступны, они должны быть защищены или общедоступны.


вы должны сделать его хотя бы защищенным:

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

доступ по умолчанию для всего в C# - "самый ограниченный доступ, который вы могли бы объявить для этого члена", поэтому private для способ.

так как aspx является дочерним классом вашего класса codebehind (Inherits) любой метод, к которому вы хотите получить доступ из aspx, должен быть объявлен как protected или public (по крайней мере, в C#, VB.NET имеет Handles).

читать:


вам нужно объявить обработчик событий, вы можете сделать это несколькими способами:

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

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

так как вы можете видеть, объявив событие в Загрузки Страницы, вы можете использовать raw void как у вас выше. В противном случае вам нужно будет объявить его в protected.

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