【问题标题】:Control ascx does not exist控件 ascx 不存在
【发布时间】:2017-03-15 21:13:07
【问题描述】:

我有一个具有以下结构的 Web 应用程序项目

ProjectName
-Controls
--WebControls
--MyControl.ascx

-CustomerControls
--CustDetails.ascx

在 CustDetails.ascx 控件中,我尝试加载 MyControl.ascx,因此我在页面上添加了一个引用(不是代码隐藏),即

<%@ Register Src="../Controls/WebControls/MyControl.ascx" TagPrefix="Ctrl" TagName="CustCtrol" %>

页面加载没有错误。

我现在将以下代码添加到代码隐藏

LoadControl = Page.LoadControl("MyControl.ascx");

但我收到 “文件 '/MyControl.ascx' 不存在。”

我尝试将路径更改为

~/Controls/WebControls/MyControl.ascx

但同样的错误。改成

../Controls/WebControls/MyControl.ascx

然后得到“不能使用前导..退出顶级目录。

我尝试了各种变体并搜索了谷歌,但我不明白我哪里出错了?

编辑 1

附上目录的图片

【问题讨论】:

  • 网站或 Web 表单模板?
  • 它是一个 Web 应用程序(当我构建它时,它会在 bin 目录中创建一个 dll)
  • @Efe,URL 显示从根目录加载。我相信问题是;如何从深层目录 /Controls/WebControls/abc.ascx 加载?
  • @Anil 谢谢你的意见,这是一个不理解的错过

标签: c# asp.net


【解决方案1】:

注意这里的目录结构:

项目名称

-控件

--Web 控件

--MyControl.ascx

它说 MyControl.ascx 在 Controls 目录中,而不是 WebControls。

你有两个选择:

1) 将 MyControl.ascx 移动到 WebControls 目录,重建解决方案,这些代码将起作用:

<%@ Register Src="~/Controls/WebControls/MyControl.ascx" TagPrefix="ctrl" TagName="CustControl" %>

LoadControl = Page.LoadControl("~/Controls/WebControls/MyControl.ascx");

2) 将其保存在与您列出的目录相同的目录中(控制目录中的 MyControl.ascx)并将上述代码中的路径更改为:

<%@ Register Src="~/Controls/MyControl.ascx" TagPrefix="ctrl" TagName="CustControl" %>

LoadControl = Page.LoadControl("~/Controls/MyControl.ascx");

无需使用 Server.MapPath。

此外,如果您在类后面的 MyControl 代码中定义了公共方法或属性,则需要将加载的控件强制转换为 MyControl,以便像我在这里所做的那样访问这些方法和属性:

LoadControl = Page.LoadControl("...") as MyControl;
//or
LoadControl = (MyControl)Page.LoadControl("...");

【讨论】:

  • 我认为路径是 Controls/WebControls/MyControl.ascx
  • @Anil 是的,我想是的,我刚刚测试了它,“~/path/to/MyControl.ascx”就像一个魅力。
  • @Computer,您能否添加您在尝试“我尝试将路径更改为 ~/Controls/WebControls/MyControl.ascx 但同样的错误”时遇到的错误,根据 Efe 这应该工作。
  • 谢谢大家,我会看看上面给出的建议。我附上了目录结构的图像以避免任何混淆
  • @Computer 那么选项 1 肯定会完成这项工作。注册控制器时不要使用“..”。如果您想确定,只需将 MyControl.ascx 从解决方案资源管理器中拖放到 CustControl.ascx 页面中,您就会看到 '~' insted of '..'。
猜你喜欢
  • 2014-10-13
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2012-01-11
相关资源
最近更新 更多