Asp.net 获取“文件”;。ascx“;用户控件的路径

Asp.net 获取“文件”;。ascx“;用户控件的路径,asp.net,web-controls,ascx,Asp.net,Web Controls,Ascx,背景: 我已经创建了一个自定义“脚本”控件,我在几个用户控件中使用它(这些控件都是通过ASCX路径加载的)。这个脚本控件提供了几个有趣的特性,但是我现在希望能够将脚本从ASCX标记中移到与ASCX控件相同的目录中,然后动态加载这个标记。(我不能使用普通的标记,因为脚本控件创建了一个特殊的绑定上下文,可以通过干净的API访问它。) 目前,我的脚本控件的使用方式如下(脚本控件使用其中的元素,不应与最终的HTML标记混淆): /*这里的代码*/ 但我希望它可用作: <SmartScript

背景:

我已经创建了一个自定义“脚本”控件,我在几个用户控件中使用它(这些控件都是通过ASCX路径加载的)。这个脚本控件提供了几个有趣的特性,但是我现在希望能够将脚本从ASCX标记中移到与ASCX控件相同的目录中,然后动态加载这个标记。(我不能使用普通的
标记,因为脚本控件创建了一个特殊的绑定上下文,可以通过干净的API访问它。)

目前,我的脚本控件的使用方式如下(脚本控件使用其中的
元素,不应与最终的HTML标记混淆):


/*这里的代码*/
但我希望它可用作:

<SmartScript runat="server">
  <script src="~parent/theCode.js" />
</SmartScript>

但是,我希望将“~parent”扩展到ASCX控件的文件系统位置,以便直接加载该文件并将其用作渲染脚本的内容

也就是说,给定基于ASCX的用户控件(可以通过父属性获得),如何确定包含ASCX标记文件的系统路径?(还有,我应该注意哪些注意事项?)

最好,这将是完整的路径,因为类似于
~/\u CONTROLTEMPLATES/prj/ctrl.ascx“
仍然留下另一层重定向(这里的
~
是什么意思?)需要处理


(应用程序运行时具有足够的信任度,可以从文件系统读取数据,我正在避免嵌入资源,这样我就可以在不需要推送DLL和重新启动IIS工作程序的情况下推送布局更改。)

好吧,这太简单了。我想它只对带有标记的控件有意义,但在这里似乎工作得很好

可与
Control.MapPathSecure
结合使用

文档中的示例如下:

output.Write("The Actual Path of the virtual directory : " + MapPathSecure(TemplateSourceDirectory));
output.Write("The Actual Path of the virtual directory : " + MapPathSecure(TemplateSourceDirectory));