You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net Site.Master路由链接路径异常问题咨询

解决ASP.NET Site.Master中路由链接路径异常的问题

你遇到的是ASP.NET Web Forms里典型的路径解析问题,我来帮你拆解原因和解决办法:

问题根源

你代码里下拉菜单(dropdown)中的<a>标签没有添加runat="server"属性,导致ASP.NET无法识别并处理~/这个根路径标记——浏览器会把~/当成普通路径字符,所以出现了http://localhost/~/Admin/ManageType这种错误路径;而去掉~/后,路径变成了相对当前页面的相对路径,当你已经处于Admin目录下的页面时,再次点击就会叠加路径,变成Admin/Admin/ManageType。

解决方案

只需要给下拉菜单里的<a>标签加上runat="server",同时保留~/前缀即可。这样ASP.NET会在页面渲染时自动把~/替换为网站的根路径,不管当前页面在哪个目录下,都会生成正确的绝对路径。

修改后的代码如下:

<ul class="nav navbar-nav">
    <li><a runat="server" href="~/"></a></li>
    <li><a runat="server" href="~/About">About</a></li>
    <li class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">Manage <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a runat="server" href="~/Admin/ManageType">Recipe</a></li>
            <li class="divider"></li>
            <li><a runat="server" href="~/Admin/ManageType">Type</a></li>
        </ul>
    </li>
    <li><a runat="server" href="~/Recipe/Recipe">Recipe</a></li>
</ul>

补充方案

如果因为某些原因不想给<a>标签加runat="server",也可以用ResolveUrl方法手动解析根路径,写法如下:

<li><a href='<%= ResolveUrl("~/Admin/ManageType") %>'>Recipe</a></li>

这个方法同样会把~/转换为正确的根路径,避免相对路径的叠加问题。

内容的提问来源于stack exchange,提问作者Theo Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:21:25