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

Cyr*_*pta 6 html asp.net

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

<a href="daily/panchang/"></a>
Run Code Online (Sandbox Code Playgroud)

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

<a href="~/daily/panchang/" runat="server">
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Cri*_*rdo 7

我不会说它是否是一个优雅的解决方案,我只是在System.Web中指出一个替代方案:

<a href="<%= VirtualPathUtility.ToAbsolute("~/daily/panchang/") %>">
Run Code Online (Sandbox Code Playgroud)


Dia*_*tis 5

您应该使用基本标记来定义应用程序的根目录,并使所有链接相对于此:

<head>
    <base href="<%= Request.ApplicationPath %>" />
</head>
...
<a href="daily/panchang/"></a> <!-- this now points to ~/daily/panchang/ -->
Run Code Online (Sandbox Code Playgroud)