我的网站上有一个页面,为了这个例子,我们可以说http://myhost/Pages/Default.aspx.在Default.aspx上,我有一个名为MyControl.ascx的用户控件,它位于/Controls/MyControl.ascx中.所以树看起来像这样
每当我在MyControl.ascx上放置HyperLink控件并指定NavigateUrl时,此路径都相对于控件而不是页面的URL.因此,例如,如果在NavigateUrl中我指定了"AboutMe.aspx",则URL将呈现为http://myhost/Controls/AboutMe.aspx而不是http://myhost/Pages/AboutMe.aspx.我有什么方法可以使这个相对于页面URL?我在这里尝试了解决方案:来自ASP.NET用户控件NavigateUrl的相对路径,但它对我不起作用.
编辑
为了澄清,我希望这是足够通用的,以便如果我不知道路径是什么,解决方案将起作用.所以我真的不想在NavigateUrl中编码"〜/ Pages/Default.aspx"
你有很多选择:
您可以使用~运算符对Url进行硬编码,该运算符为您提供根,然后从那里定义它,如:~/Pages/AboutMe.aspx.请记住,~只有服务器控件和服务器代码才能识别操作员.
您也可以使用它..来到达您想要的位置,因为它将导航回文件夹结构,如:../Pages/AboutMe.aspx
您可以创建一个帮助方法,将有效的根返回到Pages文件夹,Images,Javascript等...
该HttpRequest.ApplicationPath会得到你可以用它来构建关闭服务器上的虚拟应用程序的根路径.
有关Pathing选项的更多信息,请阅读MSDN上的这篇文章:
编辑:根据您对问题的编辑,您应该通过属性将相对URL传递给您的用户控件.让使用该控件的页面定义它将需要的资源的相对路径.
| 归档时间: |
|
| 查看次数: |
15486 次 |
| 最近记录: |