当新控件添加到.aspx时,Designer.cs不会更新

时间:2011-06-28 14:40:21

标签: c# asp.net designer

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

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

有什么想法吗?

17 个答案:

答案 0 :(得分:19)

试试这个

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

2.-构建

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

答案 1 :(得分:14)

我的工作中遇到了这个问题。

最可靠的是重新生成.designer.cs文件,而here就是解决方案:

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

答案 2 :(得分:9)

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

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

答案 3 :(得分:5)

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

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

答案 4 :(得分:3)

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

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

答案 5 :(得分:2)

我在VS2012中这样做了:

  1. 打开page.aspx.designer.cs查找控件声明 相同类型的控制(即LinkBut​​ton)
  2. 将其复制到文件的末尾(在类花括号结束之前)
  3. 重命名控件变量以匹配控件的名称。
  4. 那就是它。

答案 6 :(得分:1)

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

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

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

protected MyNameSpace.MyControl ControlName;

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

对我来说,解决方案是:

  

将页面置于设计视图中,然后右键单击/刷新。它将同步   用designer.cs进行控制。确保designer.cs关闭   在这样做之前。

Source

答案 10 :(得分:1)

我在VS2019中尝试了以上所有内容。

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

有效的方法-将文件从项目中排除,然后重新包含。

文件现在可以自动重新生成。

答案 11 :(得分:1)

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

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

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

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

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

    <%@页面语言=“ C#” AutoEventWireup =“ true” CodeBehind =“ << your_class_name >>。aspx.cs” Inherits =“ EVV.pages_sqlserver。<< your_class_name >>”%>

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

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

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

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

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

**更新:在Visual Studio:16.6.3中,这似乎已被破坏:有时可以,有时不能。即使对于全新的WebForms,Designer文件也没有更新。 **

**更新2:这不能可靠地工作。我切换到了重新设计器(https://github.com/seanofw/Redesigner/tree/branches/net40),它的工作原理就像是魅力。

答案 12 :(得分:0)

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

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

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

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

答案 13 :(得分:0)

就我而言,我必须添加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>

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

对我来说,解决方案是:

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