1

(是:ASP.Net 代码隐藏在网页上找不到控件)

我正在使用 VS 2008。

我不知道我需要翻转哪个秘密开关,或者我不小心绊倒了哪个绊线,但我在项目中创建的最后一个表单行为异常非常严重:代码隐藏显然无法找到我拥有的任何控件在表格上设置。代码隐藏文件存在,但它会在对表单上声明的控件的任何引用上生成编译错误。

最明显的线索是,在表单的标记中,第一行是:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="UserSignature.aspx.vb"
  Inherits="EEI_App.UserSignature" %>

并且 Intellisense 已在整个第一行下划线,给了我一些愚蠢的“无法加载文件或程序集”消息,它无法在我的应用程序文件夹中找到一个完全不相关的 DLL,并且引用正确设置.

起初,Intellisense 只是在“CodeBehind”设置下划线,说“找不到文件 UserSignature.aspx.vb”。- 然后由于某种原因,它也以关于 DLL 的其他消息开始。

我项目中的所有其他表单都可以正常编译和工作,并且此表单与任何其他表单之间没有明显区别。

我试过打开和关闭 Visual Studio;我已经尝试重新启动 - 没有任何区别。我添加到我的项目中的每个新表单都无法与其自己的代码隐藏通信 - 从创建新文件的那一刻起,标记给我“找不到文件'NewFile.aspx.vb'”错误!

有任何想法吗?

谢谢


我想我正在解决这个问题。@MatthewMartin,到目前为止,您绝对是最温暖的。

当我将控件放到表单上时,由于某种原因,form.aspx.designer.vb 似乎没有被刷新。我仍然不知道为什么会这样,但至少我们变暖了!


好的,这绝对是现在的问题,我已经重命名了这个问题以反映这一点:根本问题是当我将控件放到表单上时,我的 form.aspx.designer.vb 表单没有被刷新。至少对于解决方法的任何想法 - 如何迫使设计师刷新?

谢谢!

4

6 回答 6

2

您可以通过删除控件的文本并立即将其重新粘贴回原位来强制重新生成 aspx.vb.designer 页面。

还要检查页面背后的代码是否有一个 UserSignature 类和一个 EDI_App 命名空间。此外,根据您是否使用 Web 应用程序/Web 项目,默认命名空间可能会有所不同。您可以通过创建一个新文件并查看页面指令和后面代码中的类名声明之间的默认模式来验证。

最后,如果这是一个转换后的 1.1 应用程序,或者后面的代码没有说明的 2.0 应用程序

部分类

,那么您将负责声明所有控件引用。

于 2009-02-01T14:05:02.620 回答
1

你改名了吗?更改了基础/项目命名空间?特别看一下EEI_App.UserSignature——那是正确的名字吗?

为简单起见,请考虑重新创建页面、复制标记等。

于 2009-02-01T11:58:53.517 回答
1

试试这个 :

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="UserSignature.aspx.vb" Inherits="EEI_App.UserSignature" %>
于 2009-02-01T11:59:33.700 回答
1

您是否可能丢失了对 System.Web 的引用(或另一个重要的 dll,也许是您提到的那个 dll)?
当我尝试将页面或用户控件加载到 dll 解决方案时,我通常会遇到类似的问题。事实上,两次我们不得不将我们收到的文件加载到一个新项目中,这解决了它。

于 2009-02-01T13:59:01.510 回答
1

好的,我找到了自己的答案:

将所有工作代码提交到源代码控制,删除开发树,获取最新版本。

突然间一切又恢复了。它也解决了我今天的另一个问题

我将把答案归功于任何可以通过吹走我的开发树并重新开始干净来找出我翻转的秘密开关的人...... :)

于 2009-02-01T18:21:38.080 回答
1

星期五我遇到了同样的问题。事实证明,在某些情况下,VS2008 不够智能(使用 VSS 作为源代码控制——我知道,但这是客户端所拥有的)无法同时检查 aspx、aspx.vb 和 Designer.vb。就我而言,我遇到了各种奇怪的行为,当然,Visual Studio 在试图“提供帮助”时无法查看 Designer.vb。

解决方案是重新签入页面,然后将控件放在页面上并保存(或删除控件 - 任何会导致 Designer.vb 更新的操作。)

于 2009-02-01T19:09:01.430 回答