我正在努力攻击DotNetNuke Events模块。我已经设置了源代码,并且无需修改即可构建A-OK。但是,当我更改EventMonth.ascx文件时,Visual Studio会更新与之关联的.designer.vb文件...并声明两个类型错误的对象!它看起来像这样:
Protected WithEvents EventIcons As Global.System.Web.UI.UserControl
应该是这样的:
Protected WithEvents EventIcons As Global.DotNetNuke.Modules.Events.EventIcons
显然,这不会起作用......编译器(正确地)会抛出错误,其中在代码中使用了EventIcons。是什么导致这个?我可以轻松地手动修复它,但当然它稍后会再次破坏。我不认为控件的ID与类名相同,因为同一控件的另一个实例会发生同样的事情,但名称不同。
更新:好的......我相信这种情况正在发生,因为在设计时无法找到引用的用户控件。但它显然在运行时有效:
<%@ Register TagPrefix="evt" TagName="Icons" Src="~/DesktopModules/Events/EventIcons.ascx" %>
这具有逻辑意义......但我想问题就变成“在设计时解决了什么?”我想我可以将其更改为“EventIcons.ascx”,它将生成代码OK。但它会在运行时运行吗? :|
答案 0 :(得分:8)
因为项目不是从应用程序根目录开始,所以在必须正确解析~
之前,必须告诉项目真正的应用程序根目录。进入项目属性的Web选项卡,并确保在“Servers”标题下选择“Use Local IIS Web server”。将项目URL设置为特定项目的URL(即http://localhost/DotNetNuke_2/DesktopModules/Events)。然后,检查覆盖应用程序根URL并将其设置为应用程序的根URL(即http://localhost/DotNetNuke_2)。这将允许Web应用程序项目知道如何找到这些控件。
Src
属性是相对于控件的,因此它应该可以正常工作,只需将其设置为"EventIcons.ascx"
,而不是从应用程序的根目录指定它。
答案 1 :(得分:0)
〜解析为应用程序文件夹的根目录。