当实现资源时,代码后端中找不到ASP.net控件。

12

自从我们在ASP.NET网站中实现了全球化,我们遇到了一些智能感知问题。

当资源添加到ASP.NET控件时,我们会收到错误提示。 尽管在Visual Studio中显示出错信息,但应用程序仍然可以运行!

例如,以下按钮:

 <asp:Button runat="server" ID="BtnSave" Text="<%$ Resources:ResourceName, Save %>" OnClick="BtnSave_Click" />

在代码后台未被识别:

intellisense problem

只有当代码后台打开时才会显示错误。但在浏览器中它可以正常工作!

没有资源引用的相同按钮可以正常工作:

 <asp:Button runat="server" ID="BtnSave" Text="Save" OnClick="BtnSave_Click" />

这是一个自定义的SQL资源提供程序工厂,已添加到web.config文件中:

 <globalization resourceProviderFactoryType="MyNamespace.SqlResourceProviderFactory" />

我已经尝试删除缓存并重新启动电脑。

你有什么关于如何找到问题的提示吗?

先感谢了。


它是否显示在 aspx.designer.cs 文件中? - dtsg
没有设计文件,因为这是一个网站而不是Web应用程序。 - Schiavini
清除解决方案并重新构建。 - Waqar Janjua
我做了那个好几次。这也发生在每台电脑上。 - Schiavini
你能否在看到这种行为的.ascx和相应的.aspx.cs文件中发布前十行? - immutabl
1
作为一个普遍的观点,除非你正在构建一个大部分是静态HTML网站,只有一些Response.Write<%= xyz%>的网站,否则我会避免使用网站项目模型。迟早,你构建的任何应用都可能超出它的范围。 - immutabl
8个回答

6

当我创建一个新的VS2010解决方案并拖入一个现有网站时,遇到了这个问题。要解决这个问题,请右键单击项目并选择“转换为Web应用程序”,这将创建设计文件并修复智能感知问题。


我一整天都在寻找解决方案,你的方法完美地解决了我的问题,非常感谢! - math487
在2015年期间,仍然可以在Visual Studio 2012中工作。这个解决方案仍然有效。 - user4864716

3

我自己也遇到过这种情况,但与全球化无关。

我总是通过重新启动VS(似乎你已经尝试了)或检查前端代码和后端代码中的类名是否相同来解决它。

听起来很愚蠢,但如果你复制一个页面,那么类名就不会更新,所以绑定会有一些问题(这是一个技术术语)。

可能没有帮助,但这是要检查的内容。


1

尝试清除临时编译页面缓存,包括32位和64位各自的目录(以下是64位示例):

%System Drive%:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

有时候这样做可以解决问题。


我已经尝试删除缓存并重新启动计算机了。 - Schiavini
Users/AppData文件夹中还有一个临时ASP.NET文件夹 - 您是否清除了您的用户和任何IIS AppPool用户帐户的文件夹? - Josh E
有任何降低评分的原因吗?如果我的回答误导或完全没有用,知道这一点将是很好的。 - Josh E

1
你能否尝试使用隐式资源键引用来测试一下,看看是否有帮助,而不是使用你目前正在使用的显式引用?

http://msdn.microsoft.com/en-us/library/ms227427.aspx

此外,您尝试过删除“obj”文件夹并重新构建吗?有时这对我很有效。

1
我们在将.aspx页面的内容批量复制到新页面时遇到了这个问题,导致2个.aspx文件指向同一个代码后台。
CodeFile="xxxxxxxx.aspx.cs"

它以相同的方式表现出来,抛出错误,停止构建,但将其注释掉,构建,然后再将其注释回来,网站和功能就可以正常运行。


1
通常情况下,这可以通过清理和重建来解决。
如果这样不起作用,请尝试在标记或设计视图中添加一些内容以强制重新生成设计文件。
当您重命名页面文件时,也可能会出现此问题。请在.aspx文件中仔细检查“CodeBehind =”和“Inherits =”字段是否正确:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebPagName.aspx.cs" Inherits="NameSpace.ClassName" %>

例如,如果您的网页名称为WebPage1,WebPage1.aspx.cs文件中的类名为WebPage1,项目名称为Project1,则可能如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebPage1.aspx.cs" Inherits="Project1.WebPage1" %>

0

我们的资源提供程序出现了问题:它在运行时编译和工作,但在没有 HTTP 上下文 (HttpContext.Current) 的情况下崩溃。

我建议其他遇到同样问题的人检查他们 web.config 文件中使用的类是否存在这样的不一致性。


0

你能帮我做一个“干净的解决方案”并删除C盘中ASP.NET的临时文件夹吗?如果这样有帮助,请告诉我。


有2-3个想法。尝试使用<%= %>。如果这不起作用,那么会建议其他的东西。 - NG.
这应该是一个注释。 - pqsk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接