CS1061错误求助:product_aspx无txtName_TextChanged定义如何解决?
这个错误很常见,本质就是你在ASPX页面里给txtName文本框绑定了txtName_TextChanged事件处理方法,但后台代码里要么没实现这个方法,要么方法的规则不符合ASP.NET的要求,导致页面找不到它。下面是一步步的解决办法:
第一步:检查后台代码里有没有对应的方法
打开你的product.aspx.cs(VB项目就是product.aspx.vb),确认是否存在名为txtName_TextChanged的方法。C#里正确的方法签名应该是这样的:protected void txtName_TextChanged(object sender, EventArgs e) { // 这里写你需要的逻辑,比如更新标签、验证输入等 }VB版本则是:
Protected Sub txtName_TextChanged(sender As Object, e As EventArgs) Handles txtName.TextChanged ' 你的业务逻辑代码 End Sub注意:方法的访问修饰符必须是
protected或者public,不然ASPX页面无法访问到这个方法。第二步:核对方法签名和名称的准确性
ASP.NET是区分大小写的,所以要确保方法名和你在ASPX里写的OnTextChanged="txtName_TextChanged"完全一致(包括大小写)。另外,参数类型也不能错:第一个参数必须是object类型,第二个是EventArgs类型(如果是特定事件的子类也可以,但TextChanged事件用基础的EventArgs就够了)。第三步:确认页面和后台类的关联正确
查看ASPX页面最顶部的Page指令,比如:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="product.aspx.cs" Inherits="product_aspx" %>这里的
Inherits属性值必须和后台代码里的类名完全一致。比如后台代码里的类是public partial class product_aspx,那Inherits就必须是product_aspx,否则页面找不到后台的方法。第四步:检查AutoEventWireup设置
如果你的Page指令里AutoEventWireup="true",ASP.NET会自动根据方法名绑定对应的事件(比如txtName_TextChanged就对应txtName的TextChanged事件)。如果设为false,那你需要手动绑定事件:- C#可以在
Page_Load方法里添加:txtName.TextChanged += txtName_TextChanged; - VB则需要在方法上加上
Handles txtName.TextChanged(就像第二步里的示例那样)。
- C#可以在
第五步:清理并重新生成项目
有时候编译缓存会导致奇怪的找不到方法的问题,右键你的项目,先选择清理,然后再选择生成,这样能清除旧的编译文件,重新生成正确的程序集。
举个简单的实现例子,当用户修改文本框内容时,把输入的内容显示在红色标签lblEname里:
protected void txtName_TextChanged(object sender, EventArgs e) { lblEname.Text = "你输入的内容是:" + txtName.Text; }
内容的提问来源于stack exchange,提问作者Tyfur Rahman

