我在我的aspx文件中添加了一个新的控件,并注意到新的控件不仅没有添加到设计器文件中,而且还缺少了团队其他成员添加的其他一些控件。我尝试删除designer.cs文件并使用“转换为Web应用程序”但没有成功。我尝试过的其他一些事情已经从项目中排除了aspx,构建,然后重新包含但没有成功。我还手动输入设计器中缺少的控件。当我这样做后运行时会出现一个错误,说明控件没有定义,即使它实际上是,并且我应该检查我是否缺少指令。
我添加的第一个控件是来自类似控件的复制和粘贴,并进行了必要的更改。但是,我也尝试手动创建具有相同结果的控件。
有什么想法吗?
答案 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就是解决方案:
答案 2 :(得分:9)
关闭Visual Studio,然后从C:\Windows\Microsoft.Net\Framework\Your_.Net_Version\ProjectName
删除临时ASP.NET文件删除文件夹ProjectName
并重新启动Visual Studio。我前段时间遇到过类似的问题,这些行动解决了这个问题。
如果您使用IIS,则可能需要停止服务器/站点才能删除临时文件。
答案 3 :(得分:5)
要替换VS 2013中的设计器文件:
答案 4 :(得分:3)
一个简单/愚蠢的错误也会导致类似的症状,如果您复制aspx和aspx.cs文件并重命名它们,但忽略更新文件中的引用。
我遇到了这个问题,试图找到临时的asp.net目录,但清除没有帮助。然后我意识到在复制文件以创建页面的新修改版本后我没有更新CodeFile="Page.ascx.cs"
。然后我试图添加一个控件并在PageModified.ascx.cs
中引用它,但一直说它不存在。
答案 5 :(得分:2)
我在VS2012中这样做了:
那就是它。
答案 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)
答案 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)
对我来说,解决方案是: