我目前正在为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设计器的任何想法?
答案 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文件。