C# 名称';txtSearchTag';在当前上下文中不存在

C# 名称';txtSearchTag';在当前上下文中不存在,c#,asp.net,compiler-errors,controls,C#,Asp.net,Compiler Errors,Controls,我在MasterPage.master中创建了这个 这是MasterPage.master.cs中的一个 protected void btnSearch_Click(object sender, EventArgs e) { if (txtSearchTag.Text == "") { Response.Write("<script>alert('Please enter a tag before search!')</script>

我在MasterPage.master中创建了这个


这是MasterPage.master.cs中的一个

protected void btnSearch_Click(object sender, EventArgs e)
{
    if (txtSearchTag.Text == "")
    {
        Response.Write("<script>alert('Please enter a tag before search!')</script>");
    }
    else
    {
        string Title = txtSearchTag.Text;
        Response.Redirect("~/Pages/SearchResult.aspx?Title="+Title);
    }
}
protectedvoidbtnsearch\u单击(对象发送方,事件参数e)
{
如果(txtSearchTag.Text==“”)
{
响应。写入(“警报('搜索前请输入标记!'”);
}
其他的
{
string Title=txtSearchTag.Text;
Response.Redirect(“~/Pages/SearchResult.aspx?Title=“+Title”);
}
}
当我在浏览器中调试它时,我得到了一个错误:“名称‘txtSearchTag’在当前上下文中不存在”。我知道这是一个很老的错误,但我仍然知道。 我使用VS 2012,因此cs文件和设计文件中的名称完全匹配,并且已经
runat=“server”
。没有任何东西像*.aspx.designer.cs,因为它包含在*.aspx文件中,所以我无法删除cs.designer文件或“转换为Web应用程序”。我还清理解决方案或重新启动项目。。。也是,但这种错误仍然会发生。
只有这一个和FlashTagCloud中的“WPCumulus”控件发生这种情况,另一个仍然可以…

您的文本框在标记中吗?您能在设计视图中显示您的母版页声明吗?开始时是这样的:
对于我在aspx中创建的每个控件,我都添加一个属性clientMode=“Static”,以避免名称不匹配。只有在不使用UserControls的情况下,这才是一个好主意。任何复杂的应用程序,如果使用了很多这样的代码,最终都会产生名称冲突,而仅仅是为了客户端代码而停止.Net更改控件的ID。