Visual Studio 2010禁用特定ascx控件的Designer代码生成

时间:2011-08-26 03:34:40

标签: c# asp.net visual-studio dotnetnuke

我目前正在为Visual Studio 2010教授Ed开发一个Berkeley Club网站。使用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%" />

我还必须更改ascs.designer.cs文件,而不是阅读

protected global::System.Web.UI.UserControl EmailContent;

它读起来像

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

这使得它使用我想要的DNN TextEditor。问题是每当VS使用设计器自动生成代码时,它会用顶行覆盖底线。这意味着每次我更改ascx文件时,我都必须再次更改设计器。这已经烦人了,但我找不到办法解决它。关于如何为自动生成的设计器文件中的特定控件或代码段禁用VS设计器的任何想法?

2 个答案:

答案 0 :(得分:3)

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

这是ascx.cs:

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

答案 1 :(得分:3)

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

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

也就是说,这对我们来说大约有90%的时间都适用,但我们已经有了一些项目,这些项目无论出于何种原因都不起作用,然后我们采用@mika's answer来移动声明。设计器文件到codebehind文件。