【问题标题】:Designer.cs not updating when new controls added to .aspx将新控件添加到 .aspx 时 Designer.cs 未更新
【发布时间】:2011-09-24 09:28:13
【问题描述】:

我在我的 aspx 文件中添加了一个新控件,并注意到新控件不仅没有添加到设计器文件中,而且还缺少团队其他成员添加的许多其他控件。我尝试删除 Designer.cs 文件并使用“转换为 Web 应用程序”但没有成功。我尝试过的其他一些事情是从项目中排除 aspx,构建,然后重新包含但没有成功。我还手动将设计器中缺少的控件输入到设计器中。当我在这样做之后运行时,会出现一个错误,指出该控件未定义,即使它实际上是,我应该检查我是否缺少指令。

我添加的第一个控件是从类似控件中复制和粘贴的,并进行了必要的更改。但是,我也尝试过手动创建具有相同结果的控件。

有什么想法吗?

【问题讨论】:

  • 你用的是什么版本的visual studio?
  • 当 Visual Studio 的魔力消失时,您不只是讨厌它吗!?
  • Visual Studio 2010 .NET Framework 4

标签: c# asp.net designer


【解决方案1】:

试试这个

1.- 将 CodeBehind="Name.aspx.cs" 更改为 CodeFile ="Name.aspx.cs"

2.- 构建

3.- 将CodeFile ="Name.aspx.cs" 更改为CodeBehind ="Name.aspx.cs"

【讨论】:

  • 谢谢。这很容易
  • 哇。多年来一直看到这个问题,这是最简单的解决方案。很糟糕,它必须完成。不错的分享! +1
  • 对我来说,我需要清理,将 CodeBehind 更改为 CodeFile,构建,清理,将 codefile 更改为 codebehind,构建
  • 这太棒了,这是我的问题,但出于不同的原因。我正在将网站项目转换为 Web 应用程序项目。我没有在网站项目中意识到它引用了 CodeFile。一旦我将其更改为 CodeBehind,它就开始工作了。
【解决方案2】:

我在工作中遇到过这个问题。

最确定的是你重新生成你的 .designer.cs 文件,here 就是解决方案:

  • 通过解决方案资源管理器找到损坏的 aspx.designer.cs 文件
  • 仅从您的项目中删除 designer.cs 文件
  • 右键单击您的主 aspx 文件并选择“转换为 Web 应用程序”

【讨论】:

  • 成功了。谢谢!我可能会补充一点,我在 VS 2012 中遵循了这个过程。为什么我仍在开发 webforms 应用程序?这才是真正的问题。
  • 在 VS 2013 中,该选项莫名其妙地移到了菜单栏上的项目下拉菜单中。 link
  • 链接失效了,不建议发链接是有原因的,解决方法是把链接中的设计器文件去掉,然后右键Project,选择Convert to Web Application。跨度>
  • 但是为什么设计器文件没有自行更新?
  • 链接丢失。无论如何,这篇文章中有no content
【解决方案3】:

对我来说,解决方案是:

将您的页面置于设计视图中并右键单击/刷新。它会同步 带有designer.cs 的控件。确保 Designer.cs 已关闭 在这样做之前。

Source

【讨论】:

    【解决方案4】:

    关闭 Visual Studio,然后从 C:\Windows\Microsoft.Net\Framework\Your_.Net_Version\ProjectName 删除 Temporary ASP.NET Files 删除文件夹 ProjectName 并重新启动 Visual Studio。我前段时间遇到过类似的问题,通过这些操作解决了。

    如果您使用 IIS,您可能需要停止服务器/站点才能删除临时文件。

    【讨论】:

    • 这是唯一适用于 Visual Studio 2013 的方法
    【解决方案5】:

    在 VS 2013 中替换设计器文件:

    1. 删除旧的 *.designer.cs 文件
    2. 选择 *.aspx 文件
    3. 从项目顶部下拉栏中选择“转换为 Web 应用程序”

    【讨论】:

      【解决方案6】:

      我在 VS2012 中做了这个:

      1. 打开page.aspx.designer.cs找到一个控件声明 同类型的控件(即LinkBut​​ton)
      2. 复制到文件末尾(类大括号结束前)
      3. 重命名控件变量以匹配控件的名称。

      就是这样。

      【讨论】:

      • 有时手动操作是唯一可行的选择
      【解决方案7】:

      如果您复制 aspx 和 aspx.cs 文件并重命名它们,但忽略更新文件内的引用,也会导致类似症状的一个简单/愚蠢的错误。

      我在试图找到临时 asp.net 目录时遇到了这个问题,但清除它并没有帮助。然后我意识到在我复制文件以创建页面的新修改版本后,我没有更新CodeFile="Page.ascx.cs"。然后我试图添加一个控件并在PageModified.ascx.cs 中引用它,但一直说它不存在。

      【讨论】:

      • 宾果游戏。它仍在引用我从中复制的文件。
      【解决方案8】:

      就我而言,我必须添加 runat="server" 属性然后重新构建解决方案。缺失的元素会自动添加到生成的aspx.designer.cs 中,并可以在代码中使用

      <button runat="server" id="Button01" type="button" class="Button" onclick="location.href='http://http://www.example.com/';">
         <asp:Label runat="server" Text='<%# GetText("Button01")%>'></asp:Label>
      </button>
      

      【讨论】:

        【解决方案9】:

        当您有一个引用同一命名空间中另一个用户控件的用户控件时,这似乎也会发生。 如果将引用的用户控件移动到不同的命名空间,问题就会消失

        【讨论】:

          【解决方案10】:

          有时 html 中可能会出现错误,例如两个具有相同 ID 的控件。还要小心 div 和 span 标签。这些会阻止设计师更新。对于所有这些,请检查错误列表中的警告并修复它们。你准备好了。这解决了我的问题。

          【讨论】:

            【解决方案11】:

            我只能在代码隐藏文件中手动添加控件声明才能解决问题。每次我尝试重新生成 design.cs 文件时,VS 2013 都会写入相同的行而不会丢失控件。

            声明需要在后面的代码中添加,而不是在design.cs中,因为每次更改.aspx都会删除它。

            只需像对任何其他变量一样添加声明,如下所示:

            protected MyNameSpace.MyControl ControlName;
            

            【讨论】:

              【解决方案12】:

              我在 VS2019 中尝试了以上所有方法。

              我删除了设计器文件,单击项目菜单/转换为 Web 应用程序重建了设计器文件,但是它仍然不会自动重新生成。

              什么有效 - 从项目中排除该文件,然后重新包含它。

              文件现在会自动重新生成。

              【讨论】:

                【解决方案13】:

                为了使用 Visual Studio 2019 从内联 ASPX 代码创建代码隐藏 C# 文件,我通过以下过程成功:

                • 使用主菜单中的 Project/AddClass 创建具有相同基本名称和“.cs”扩展名的 CS 文件。

                • 将所有 C# 代码从 ASPX 文件移到这个新文件中。将以下代码添加到这个新类中:

                  命名空间 > { 公共部分类 > : System.Web.UI.Page {

                • 添加/修改 ASPX 文件的第一行:

                  >.aspx.cs" Inherits="EVV.pages_sqlserver.>" %>

                • 使用主菜单中的 Project/AddClass 创建具有相同基本名称和“.designer.cs”扩展名的 CS 文件。

                • 复制任何其他 .designer 文件的内容。删除类的全部内容,只剩下大括号。

                • 打开基本 ASPX 文件的表单设计器。右键保留任何空白区域并选择刷新。有时,这就足够了。如果没有:

                • 在解决方案资源管理器中,右键单击同一个 ASPX 文件并选择发布。

                • 有时它仅在关闭 Visual Studio、删除所有临时文件并重新打开解决方案后才起作用。

                ** 更新:在 Visual Studio:16.6.3 中,这似乎被破坏了:它有时有效,有时无效。即使对于全新的 WebForms,Designer 文件也没有更新。 **

                ** 更新 2:这不能可靠地工作。我切换到了 Redesigner (https://github.com/seanofw/Redesigner/tree/branches/net40),它的工作原理非常棒。

                【讨论】:

                  【解决方案14】:

                  只是添加到可能的解决方案列表中:我的标记文件中的这些行虽然看似有效,但显然导致与设计器文件断开连接:

                  <%: Styles.Render("/my-file.css") %>
                  <%: Scripts.Render("/my-file.js") %>
                  

                  我只是将它们注释掉,保存,然后设计的文件开始正常工作。然后我取消注释这两行,保存,并且能够毫无问题地向页面添加新控件。我觉得这很奇怪,我仍然不清楚问题的最初原因是什么。我只能推测这是一个 Visual Studio 错误。

                  重点是,可能存在导致问题的完全有效的代码,在这种情况下,可能的解决方案是在标记文件中注释 HTML 部分,直到设计器文件自行解决,然后您可以撤消所有您的评论并恢复正常工作。

                  【讨论】:

                    【解决方案15】:

                    由于 Telerik Web 控件中的错误,我的 Designer.vb 代码文件没有更新 - 我在 MasterTableView 的 DataKeyNames 属性中的值不正确。 aspx 编辑器在设计时没有选择它,因为它只是一个字符串值,但它导致 Designer.vb 文件的自动生成失败。

                    【讨论】:

                      【解决方案16】:

                      在我的情况下,它有助于首先将 ascx 文件中控件的“ID”属性更改为其他值,然后再返回所需的值。它会导致 ascx.designer.cs 文件的刷新。万一由于某种原因尚未为您的控件生成 C# 代码的简单技巧...

                      【讨论】:

                        【解决方案17】:

                        对我来说,解决方案是:

                        1. 我删除了设计器文件。
                        2. 回收站并恢复同一个文件。
                        3. 在 Visual Studio 解决方案资源管理器中,单击从顶部显示隐藏的项目并将相同的文件包含到 ascx 文件中。
                        4. 右键单击 ascx 页面并单击视图设计器。 (可选)
                        5. 在设计器上,右键单击并刷新并保存。 (可选)

                        【讨论】:

                          【解决方案18】:

                          作为解决方案,右键单击 aspx.cs 页面并选择 move... into 并选择

                          【讨论】:

                          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                          【解决方案19】:

                          确保您的控件在页面范围内。在我的例子中,它在一个中继器模板中。

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2013-03-21
                            • 1970-01-01
                            • 2016-03-06
                            • 2018-04-26
                            • 2011-12-06
                            • 1970-01-01
                            相关资源
                            最近更新 更多