【问题标题】:Codebehind file doesn't recognize aspx-controls代码隐藏文件无法识别 aspx 控件
【发布时间】:2012-10-18 09:11:04
【问题描述】:

我得到了一个用 aspx/c# 编写的 webproject。当我将它加载到 Visual Studio 2010 时,我收到很多错误,告诉我代码隐藏文件中的某些控件在当前上下文中不存在。

我检查了常见的陷阱,例如错误的代码隐藏文件名,缺少runat-attribute,重新启动VS,重新加载项目,但没有解决错误。

我还能做些什么来检查问题出在哪里?

【问题讨论】:

  • 由于错误,我什至无法构建它
  • 类似的问题和可能的解决方案在这里:stackoverflow.com/questions/38670/…
  • 感谢@03Usr,该问题的第二个答案就是解决方案。我删除了所有设计器文件并让它们重新生成,现在它可以工作了。

标签: c# asp.net visual-studio-2010 code-behind


【解决方案1】:

尝试将代码隐藏更改为 CodeFile="where code locate",然后它可能会起作用。

【讨论】:

  • 我这样做了,代码隐藏能够重新注册 cs 文件。我只是按照您所说的做了,删除了那里的内容和引号,然后重新输入引号并选择了 cs 文件,问题就解决了。
  • 如果我重新输入引号并尝试选择文件,项目中的所有代码文件都不存在!然而,它们位于解决方案资源管理器中的 aspx 文件下!!
【解决方案2】:

标记文件的继承类和文件后面的代码应该匹配,并确保这些控件不是第三方并且可能需要引用它们的dll或其他东西。如果这些控件是用户控件(ascx)控件,请确保它们在顶部的寄存器行中使用了正确的标记名。

【讨论】:

  • 继承类/命名空间是正确的。它们都是简单的<asp:-elements。 “注册”行是什么意思?
  • 我的意思是如果你有任何这样的用户控件注册声明(在标记文件的顶部)
【解决方案3】:

感谢@03Usr,下面的链接带来了答案:

ASP.NET controls cannot be referenced in code-behind in Visual Studio 2008

删除所有设计器文件并将项目转换为 Web 应用程序会带回设计器文件,从而有效地使控件再次可引用。

【讨论】:

  • 您也可以排除然后重新包含文件,这有时会重建设计器文件。
【解决方案4】:

这是一个非常烦人的 hack,但是如果您从 aspx 页面中删除控件然后保存页面,然后将控件粘贴回页面并再次保存后面的代码,那么似乎可以识别该控件。每当我更改像 ID 这样的属性时,我都会遇到这个问题。

【讨论】:

  • 这搞砸了。我在三个上做了这个,它只对一个有效。 VS 2019。我喜欢 Visual Studio,但我想我应该等整整五年才能转移到下一个版本。
  • 有趣的是,你知道它知道它的存在,因为它出现在智能感知中。
【解决方案5】:

在我的例子中,aspx 文件位于名为 XYZ 的文件夹中,类名是 ABC。所以 ASP 将 C# 文件的类名命名为 XYZ_ABC 将文件重命名为ABC后,错误已修复

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多