将runat =“server”添加到HTML标签以获得ASP.net中的相对路径是一个优雅的解决方案吗?

时间:2008-12-30 12:23:15

标签: asp.net html

我在新网站的不同位置使用了几个ASP.Net Usercontrols。这些用户控件有这样的链接:

<a href="daily/panchang/"></a>

如果在各个子目录中的页面中使用了usercontrol,则相对路径不起作用,我不想在路径中提供我的完整网站名称。所以我做了这个

<a href="~/daily/panchang/" runat="server">

现在ASP.Net'〜'标记可以正常解析根路径。

是否可以将我的所有HTML标记标记为需要使用runat =“server”解析根路径,或者您知道更好的HTML方式吗?

由于

3 个答案:

答案 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中,并且您不希望使用无用的数据将其混乱。