2011-05-15 55 views
1

为什么我得到这个错误“The name'lblHelloWorld'在当前上下文中不存在”?我如何解决它?标签在当前上下文中不存在

<%@ Page Language="C#" AutoEventWireup="True" Inherits="_Default"  Codebehind="Default.aspx.cs" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<title>Hello, world!</title> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:ScriptManager ID="MainScriptManager" runat="server" /> 
    <asp:UpdatePanel ID="pnlHelloWorld" runat="server"> 
     <ContentTemplate> 
      <asp:Label runat="server" ID="lblHelloWorld" Text="Click the button!" /> 
      <br /><br /> 
      <asp:Button runat="server" ID="btnHelloWorld" OnClick="btnHelloWorld_Click" Text="Update label!" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</form> 

using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace ajaxTesting 
{ 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void btnHelloWorld_Click(object sender, EventArgs e) 
    { 
     lblHelloWorld.Text = "Hello, world - this is a fresh message from ASP.NET AJAX! The time right now is: " + DateTime.Now.ToLongTimeString(); 
    } 
} 
} 

我试图清理和rebuliding;删除designer.cs文件并重新创建它,但没用。

+0

如果你把标签放在UpdatePanel之外,它是否工作? – 2011-05-15 13:13:16

+0

不,它仍然不起作用 – vatspoo 2011-05-15 13:16:11

+0

接受的答案是否[这里](http://forums.asp.net/t/1006588.aspx/1?The+name+xxx+Does+Not+Exist+in+the+Current +上下文)也可以解决你的问题? – 2011-05-15 13:20:56

回答

1

我认为您的designer.cs文件存在问题。尝试在designer.cs文件中手动添加此标签的引用。

编辑:

修订你的代码后,问题出在name space

解决您的问题::

这个替换您行:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ajaxTesting._Default" %> 
+1

我检查过。参考文件 – vatspoo 2011-05-15 13:49:04

+0

中有编辑答案,试试这个。 – 2011-05-15 14:09:19

+1

嘿酷!你解决了这个问题。谢谢:) – vatspoo 2011-05-16 04:43:32

0

第1步:

复制关闭ASPX表单,代码隐藏和设计师的文件,并重新创建再次通过复制和粘贴的形式。

第2步:

如果第1步不能解决问题:在Visual Studio中,去编辑 - >查找和替换 - >在文件中查找和你的项目中搜索与同一控制名称。

步骤3

关闭了Visual Studio和所有的浏览器。暂时停止IIS并导航到临时ASP.NET文件文件夹(路径可能在您的计算机上不同):

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files

从这里开始从底部的站点文件夹中删除所有内容(从底部开始)(因为您可能会获得ACL文件夹权限限制)。

重新启动IIS,然后重试(在尝试完成上述步骤之一或两者之后)。

0

最好的解决办法是:

  1. 所有的代码行复制<body> and </body>
  2. 之间在项目中创建一个新的页面aspx
  3. <body>标记替换为您复制的标记
  4. 同样复制并粘贴.cs文件中的代码。

我觉得这应该可以解决您的问题。

0

另一种可能性,我有:

如果复制的cs文件,例如:复制“Default.aspx.cs”,让“的Default.aspx - Copy.cs”(你现在有两个文件在同一文件夹中), 结果将是:该文件将出现在项目文件列表中。即使将复制的文件排除在项目外,但将该文件保留在同一文件夹中也无法解决问题。

为避免此问题,请将复制的文件移出项目文件夹。

0

我从其他人导入源文件后出现此问题。一段时间后,我发现我没有任何designer.cs文件。

我跟着this解决方案。特别是关于“转换为Web应用程序”的部分。那为我做了诡计!

0

我在asp.net网站遇到了同样的问题(3.5)在我的情况下,有两份相同的文件。

  1. Compute.aspx
  2. Compute_backup.aspx

我排除在网站上的#2文件,它为我工作。