将新控件添加到.aspx时Designer.cs不更新

本文关键字:aspx Designer cs 更新 添加 新控件 控件 | 更新日期: 2023-09-27 18:00:47

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

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

有什么想法吗?

将新控件添加到.aspx时Designer.cs不更新

试试这个

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

2.-构建

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

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

最可靠的方法是重新生成.designer.cs文件,下面是解决方案:

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

对我来说,解决方案是:

将页面置于设计视图中,然后右键单击/刷新。它将同步使用designer.cs打开控件。确保designer.cs关闭在此之前。

关闭Visual Studio,然后从C:'Windows'Microsoft.Net'Framework'Your_.Net_Version'ProjectName中删除临时ASP.NET文件删除文件夹ProjectName并重新启动Visual Studio。我不久前也遇到过类似的问题,这些行动解决了这个问题。

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

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

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

我在VS2012:中做到了这一点

  1. 打开页面.aspx designer.cs查找相同类型的控件(即LinkButton)
  2. 将其复制到文件末尾(在类花括号末尾之前)
  3. 重命名控件变量以匹配控件的名称

就是这样。

在我的情况下,我必须添加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>

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

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

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

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

我只能在代码隐藏文件中手动添加控制声明来解决这个问题。每次我尝试重新生成design.cs文件时,VS2013都会在没有丢失控件的情况下写入相同的行。

声明需要添加到代码隐藏中,而不是design.cs中,因为每次更改.aspx时都会删除它。

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

protected MyNameSpace.MyControl ControlName;

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

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

我只是简单地把它们注释掉,保存下来,设计的文件就开始正常工作了。然后,我取消了这两行的注释,保存了它们,并能够在没有问题的情况下向页面添加新控件。我觉得这很奇怪,我仍然不清楚问题的最初原因是什么。我只能推测这是一个VisualStudio错误。

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

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

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

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

    命名空间<lt;您的命名空间>gt;{公共分部类<lt;your_class_name>gt;:System.Web.UI.Page{

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

    <%@页面语言=";C#";AutoEventWireup=";真";CodeBehind="<lt;your_class_name>gt;。aspx.cs";继承=";EVV.pages_sqlserver。<lt;your_class_name>gt"%>

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

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

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

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

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

**更新:在VisualStudio:16.6.3中,这似乎被打破了:它有时有效,有时无效。即使是全新的WebForms,Designer文件也没有更新。**

**更新2:这不可靠。我换了"重新签名者"(https://github.com/seanofw/Redesigner/tree/branches/net40)这就像一个符咒。

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

我在VS2019中尝试了以上所有操作。

我删除了设计器文件,点击了项目菜单/转换为Web应用程序,重新生成了设计器文件。然而,它仍然无法自动重新生成。

工作原理-将文件从项目中排除,然后重新包含。

该文件现在保持自动重新生成。

在我的情况下;ID";ascx文件中控件的属性先设置为其他值,然后返回到所需值。这将导致ascx.designer.cs文件的刷新。在C#代码由于某种原因还没有为您的控制生成的情况下的简单技巧。。。

对我来说,解决方案是:

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

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

确保您的控件在页面的范围内。在我的案例中,它是在Repeater模板中。