asp.net - 获取用户控件的 ".ascx"路径

标签 asp.net web-controls ascx

上下文:

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

当前我的 Script 控件的使用方式如下(其中的 <script> 元素由 Script 控件使用,不应与最终的 HTML 标记混淆):

<SmartScript runat="server">
  <script>/* the code here */</script>
</SmartScript>

但我希望它可以用作:

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

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

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

最好是完整路径,如 ~/_CONTROLTEMPLATES/prj/ctrl.ascx"仍然留下另一层重定向(~ 在这里意味着什么?)来解决。

(应用程序以足够的信任运行,可以从文件系统读取数据,并且我避免嵌入资源,因此我可以推送布局更改,而无需推送 DLL 并重新启动 IIS 工作线程。)

最佳答案

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

Control.TemplateSourceDirectory可以与Control.MapPathSecure结合使用。

文档中的示例是:

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

关于asp.net - 获取用户控件的 ".ascx"路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037677/

相关文章:

C# LoadControl() (.ascx) 并添加到 "this"而不是子控件

javascript - Asp .Net Mvc Bundle错误的脚本路径

c# - ASP.NET TextBox 控件 - 获取隐藏代码中的默认文本值?

.net - 如何在 Winform WebControl 中强制使用 IE 版本?

c# - 从另一个单选按钮的 "CheckedChanged"事件中取消选择其他单选按钮

c# - 无溢出检查的整数运算

javascript - 插入登录函数 ASP.NET

asp.net - 创建 Web 应用程序以扫描文档

javascript - 在表格行的末尾添加编辑/删除按钮

c# - 将 ASP.NET MVC View 返回为 HTML 文件,以便在电子邮件模板中使用