C# Visual Studio 2010禁用特定ascx控件的设计器代码生成

C# Visual Studio 2010禁用特定ascx控件的设计器代码生成,c#,asp.net,visual-studio,dotnetnuke,C#,Asp.net,Visual Studio,Dotnetnuke,我目前正在Visual Studio 2010 Prof.Ed.为伯克利俱乐部开发一个网站,使用Asp.net和Dotnetnuke v6。这将是我第二次遇到这个具体问题/麻烦。我创建了一个新控件(ascx文件),并一直在处理它。我想添加Dotnetnuke htmleditor,因为它生病了,所以添加了必需的代码。即 <%@ Register TagPrefix="dnn" TagName="TextEditor" Src="~/controls/TextEditor.ascx"%>

我目前正在Visual Studio 2010 Prof.Ed.为伯克利俱乐部开发一个网站,使用Asp.net和Dotnetnuke v6。这将是我第二次遇到这个具体问题/麻烦。我创建了一个新控件(ascx文件),并一直在处理它。我想添加Dotnetnuke htmleditor,因为它生病了,所以添加了必需的代码。即

<%@ Register TagPrefix="dnn" TagName="TextEditor" Src="~/controls/TextEditor.ascx"%>

<dnn:TextEditor ID="EmailContent" runat="server" Height="400px" Width="100%" />
它读起来像

protected global::DotNetNuke.UI.UserControls.TextEditor EmailContent;

这使得它使用DNN文本编辑器,这是我想要的。问题是,每当VS使用设计器自动生成代码时,它都会用顶行覆盖底线。这意味着每次更改ascx文件时,我都必须再次更改设计器。这已经变得很烦人,但我还没有找到一种方法来解决它。关于如何为自动生成的设计器文件中的特定控件或代码段禁用VS designer,您有什么想法吗?

EmailContent
声明放在
ascx.cs
文件中,然后将其从
ascx.designer.cs
文件中删除。这将防止设计者弄乱类型

这将转到ascx.cs:

protected global::DotNetNuke.UI.UserControls.TextEditor EmailContent;

EmailContent
声明放入
ascx.cs
文件中,并将其从
ascx.designer.cs
文件中删除。这将防止设计者弄乱类型

这将转到ascx.cs:

protected global::DotNetNuke.UI.UserControls.TextEditor EmailContent;

问题是Visual Studio将路径
~/
解释为项目的根,而不是DotNetNuke网站的根(它在运行时的解析方式)

如果您正在处理的模块项目位于本地IIS中托管的DotNetNuke站点中,则可以设置该项目以了解其实际根所在的位置。在项目的属性中,转到“Web”选项卡,并确保已为IIS设置该选项卡。项目URL应该是模块的URL(例如
http://mysite.dnndev.me/DesktopModules/MyModule
),然后选中“覆盖应用程序根URL”复选框,并在此处输入网站的根目录(例如
http://mysite.dnndev.me
)。这应该允许VisualStudio实现where
~/controls/TextEditor.ascx
点,并找到正确的类型


也就是说,这在90%的情况下对我们有效,但我们有一些项目由于任何原因都不起作用,然后我们求助于将声明从设计器文件移动到codebehind文件。

问题是Visual Studio将路径
~/
解释为项目的根,而不是DotNetNuke网站的根(它将如何在运行时解析)

如果您正在处理的模块项目位于本地IIS中托管的DotNetNuke站点中,则可以设置该项目以了解其实际根所在的位置。在项目的属性中,转到“Web”选项卡,并确保已为IIS设置该选项卡。项目URL应该是模块的URL(例如
http://mysite.dnndev.me/DesktopModules/MyModule
),然后选中“覆盖应用程序根URL”复选框,并在此处输入网站的根目录(例如
http://mysite.dnndev.me
)。这应该允许VisualStudio实现where
~/controls/TextEditor.ascx
点,并找到正确的类型


也就是说,这在90%的情况下对我们有效,但我们有一些项目无论出于何种原因都不起作用,然后我们求助于将声明从设计器文件移动到codebehind文件。

为什么需要更改设计器中EmailContent字段的声明?设计器文件是专门为VS生成的,千万不要碰它!(而且您不必)@Pedro,有时当存在编译错误或解析错误(使用aspx/ascx文件)时,设计器代码生成无法正常工作。将建议检查“错误列表”中的错误/警告,并尝试尽可能多地修复(尤其是设计师错误)。设计器错误不是编译器错误,因此无法运行应用程序。此外,只有在打开相关文件时,您才会看到设计器错误-因此建议同时打开页面(aspx)和控件(ascx),以查看是否存在与设计器相关的错误/警告。为什么需要更改设计器中EmailContent字段的声明?设计器文件是专门为VS生成的,千万不要碰它!(而且您不必)@Pedro,有时当存在编译错误或解析错误(使用aspx/ascx文件)时,设计器代码生成无法正常工作。将建议检查“错误列表”中的错误/警告,并尝试尽可能多地修复(尤其是设计师错误)。设计器错误不是编译器错误,因此无法运行应用程序。此外,仅当您打开相关文件时,您才会看到设计器错误-因此建议同时打开页面(aspx)和控件(ascx),以查看是否存在与设计器相关的错误/警告。请尝试一下,它看起来可以正常工作。谢谢你的信息!试过了,看起来很管用。谢谢你的信息!回答得很好。首先尝试这些步骤是很容易的,如果出现任何问题,可以退回到codebehind解决方案(见文章)。无论如何,我都无法获得完整的设计视图支持。设计视图总是抱怨“找不到文件“~/controls/TextEditor.ascx”。回答得很好。首先尝试这些步骤是很容易的,如果出现任何问题,可以退回到codebehind解决方案(见文章)。无论如何,我都无法获得完整的设计视图支持。设计视图总是抱怨“找不到文件“~/controls/TextEditor.ascx”。