我在新网站的不同位置使用了几个ASP.Net Usercontrols。这些用户控件有这样的链接:
<a href="daily/panchang/"></a>
如果在各个子目录中的页面中使用了usercontrol,则相对路径不起作用,我不想在路径中提供我的完整网站名称。所以我做了这个
<a href="~/daily/panchang/" runat="server">
现在ASP.Net'〜'标记可以正常解析根路径。
是否可以将我的所有HTML标记标记为需要使用runat =“server”解析根路径,或者您知道更好的HTML方式吗?
由于
答案 0 :(得分:7)
我不会说它是否是一个优雅的解决方案,我只是在System.Web中指出一个替代方案:
<a href="<%= VirtualPathUtility.ToAbsolute("~/daily/panchang/") %>">
答案 1 :(得分:5)
您应该使用基本标记来定义应用程序的根目录,并使所有链接相关,如下所示:
<head>
<base href="<%= Request.ApplicationPath %>" />
</head>
...
<a href="daily/panchang/"></a> <!-- this now points to ~/daily/panchang/ -->
答案 2 :(得分:4)
要小心,因为每次发生PostBack时,runat="server"
的每个元素都将被“序列化”并存储在ViewState中,并且您不希望使用无用的数据将其混乱。