【问题标题】:ASP.net controls not found in the code behind when implementing resources实现资源时在后面的代码中找不到 ASP.net 控件
【发布时间】:2012-07-04 15:10:37
【问题描述】:

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

将资源添加到 asp.net 控件时,我们会收到错误消息。 即使在 Visual Studio 中显示错误,应用程序也能正常工作!

比如下面这个按钮

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

在后面的代码中无法识别:

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

没有资源引用的相同按钮效果很好:

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

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

 <globalization resourceProviderFactoryType="MyNamespace.SqlResourceProviderFactory" />

我已经尝试删除缓存并重新启动计算机。

您对如何找到问题有任何提示吗?

提前致谢。

【问题讨论】:

  • 它是否显示在aspx.designer.cs 文件中?
  • 没有设计器文件,因为它是一个网站,而不是一个网络应用程序
  • 清除解决方案并重建它。
  • 我这样做了好几次。它也发生在每台计算机上
  • 一般来说,除非您正在构建一个包含几个Response.Writes 和&lt;%= xyz%&gt;s 的大部分静态HTML 网站,否则我会避免使用网站项目模型。迟早,您构建的任何应用程序都可能会从中发展出来。

标签: asp.net visual-studio-2010 .net-4.0 intellisense globalization


【解决方案1】:

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

【讨论】:

  • 整天都在寻找解决方案,您的工作完美,非常感谢!
  • 2015 年仍可在 Visual Studio 2012 中使用。此解决方案仍然有效。
【解决方案2】:

我自己也遇到过几次,但与全球化无关。

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

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

可能没有帮助,但需要检查。

【讨论】:

    【解决方案3】:

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

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

    这有时可以解决问题

    【讨论】:

    • “我已经尝试删除缓存并重新启动计算机。”
    • Users/AppData 文件夹中还有一个临时 ASP.NET 文件夹——您是否为您的用户和任何 IIS AppPool 用户帐户清除了该文件夹?
    • 否决票的任何理由?如果我的回答具有误导性或完全无用,最好知道
    【解决方案4】:

    您是否可以尝试使用隐式资源键引用来查看这是否有帮助,而不是您正在使用的显式引用?

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

    另外,您是否尝试过删除“obj”文件夹并重建 - 有时这对我有用?

    【讨论】:

      【解决方案5】:

      当 .aspx 页面的内容被批量复制到一个新页面时,我们遇到了这个问题,导致 2 个 .aspx 文件指向后面的相同代码

      CodeFile="xxxxxxxx.aspx.cs"
      

      它以同样的方式表现出来,抛出错误,停止构建但将其注释掉,构建然后将其评论回来,网站和功能运行良好。

      【讨论】:

        【解决方案6】:

        通常可以通过清理和重建来解决此问题。

        如果这不起作用,请尝试在标记或设计视图中添加一些内容以强制重新生成设计器文件。

        当您重命名页面文件时也会发生这种情况。仔细检查 .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" %>
        

        【讨论】:

          【解决方案7】:

          能否请您执行“清理解决方案”并删除 c 盘中 asp.net 的临时文件夹,如果这有帮助,请告诉我

          【讨论】:

          • 有 2-3 个想法。尝试使用 "。如果这不起作用,那么将提出不同的建议
          • 这应该是一条评论。
          【解决方案8】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多