我在.aspx页面上有以下按钮:
<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'的第一个参数可以找到(你是否缺少using指令或汇编引用? )
但是,当我将click事件从代码隐藏移动到它构建的标记内的脚本块时。
有什么想法吗?
答案 0 :(得分:6)
您确定将方法放在正确的代码隐藏文件中吗?
通过查看aspx文件本身顶部的@page
指令(检查inherits
属性),检查您使用的文件作为代码隐藏文件 - 您可能会感到惊讶。 / p>
松散相关的旁注:通过将OnClick
设置为与您要调用的方法相对应的字符串值,您隐式依赖于ASP.NET {{3}我不认为这是一个很好的方法。最好在页面的OnInit
覆盖方法中手动连接控件,如下所示:
bntLogin.Click += bntLogin_Click;
依靠AutoEventWireup,您允许ASP.NET运行时为您创建此代码,并且由于这会在执行时发生,因此会导致执行时性能损失以及像您现在看到的异常一样。
答案 1 :(得分:0)
我通常在代码隐藏的OnInit方法中连接事件,这是ASP.NET 1.1的保留(那时设计师会把它放回去。)
答案 2 :(得分:0)
如果您仍然运行ASP.NET 1.1,请删除aspnet_client文件夹,重新构建并重试。