2009-11-19 5 views
1

У меня есть следующие кнопки на .aspx странице:C# Кнопка Нажмите

<asp:Button runat="server" ID="bntLogin" OnClick="bntLogin_Click" Text="Login" /> 

со следующими в .aspx.cs:

protected void bntLogin_Click(object sender, EventArgs e) 
     { 
      // 
     } 

Когда я пытаюсь построить его, я получаю следующая погрешность:

«ASP.reserve_aspx» не содержит определения для «bntLogin_Click», и не может быть найден метод расширения «bntLogin_Click», принимающий первый аргумент типа «ASP.reserve_aspx» (вам не хватает использования directi ve или ссылка на сборку?)

Однако, когда я перемещаю событие click из кода в блок сценария внутри разметки, он строит.

Любые идеи?

ответ

7

Вы уверены, что вы поместили метод в правильный файл с кодом?

Проверьте, какой файл вы используете в качестве кода, находящегося за файлом, просмотрев директиву @page в верхней части самого файла aspx (проверьте атрибут inherits) - вы можете быть удивлены.


слабо связанная ремарка: Устанавливая OnClick со строковым значением, которое соответствует методе вы хотите вызвать у вас неявно полагается на AutoEventWireup функции ASP.NET, которые я не считаю быть хорошим подходом. Лучше вручную соединять элементы управления в методе OnInit коррекции вашей страницы, как это:

bntLogin.Click += bntLogin_Click; 

Опираясь на AutoEventWireup вы позволяете выполнения ASP.NET, чтобы создать этот код для вас и так как это происходит во время выполнения вы несете штраф исполнения времени исполнения, а также рискуете получить исключение, подобное тому, которое вы видите сейчас.

+0

Да, я дважды проверил, его в правильном коде и унаследовал правильный класс. – Neil

+0

Итак, попробуйте удалить атрибут 'OnClick' из вашего aspx-файла и добавить код, который я опубликовал выше. –

+0

Я понимаю, что если вы используете AutoEventWireup, тогда нет необходимости явно объявлять обработчики событий, такие как OnClick в aspx. – recursive

0

я обычно подключить события в методе OnInit отделенного кода, который является удерживающим более из ASP.NET 1.1 (что, где дизайнер поставил бы ее тогда.)

0

Если вы случайно «все еще выполняется ASP.NET 1.1, удалите папку aspnet_client, перестройте и повторите попытку.

Смежные вопросы