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.
}