渲染到HTML Anchor后,ASP.Net HyperLink的NavigateUrl发生了变化

时间:2010-11-17 08:28:17

标签: asp.net html hyperlink anchor navigateurl

我是ASP.Net的新手。我有一个Master.aspx和一个Page1.aspx和Page2.aspx,都在同一个目录中。

站长:

<asp:HyperLink NavigateUrl="Page1.aspx" runat="server" Text="Page 1" />
<asp:HyperLink NavigateUrl="Page2.aspx" runat="server" Text="Page 2" />

Page1和Page2都从主页面上方呈现。

所有三个都在一个垂直目录中,映射为子域,这里是详细信息:

虚拟直观:dirvir 域名:dirvir.example.com

现在当我打开任何页面时说:

http://dirvir.example.com/Page1.aspx

呈现的超链接包含

href="../virdir/Page1.aspx"
href="../virdir/Page2.aspx"

分别

点击它们就会带我去

http://dirvir.example.com/dirvir/Page1.aspx
http://dirvir.example.com/dirvir/Page2.aspx

我希望它在哪里

http://dirvir.example.com/Page1.aspx
http://dirvir.example.com/Page2.aspx

我可以通过使用&lt; a&gt;来实现相同的目标。但我也需要它们背后的代码,以至于不需要它。

  

注意:使用&lt; a&gt;与runat服务器也   HyperLink的行为方式相同   确实

3 个答案:

答案 0 :(得分:0)

如下所示,您可以尝试更改NavigateUrl,

<asp:HyperLink NavigateUrl="~/Page1.aspx" runat="server" Text="Page 1" />
<asp:HyperLink NavigateUrl="~/Page2.aspx" runat="server" Text="Page 2" />

<asp:HyperLink NavigateUrl="/Page1.aspx" runat="server" Text="Page 1" />
<asp:HyperLink NavigateUrl="/Page2.aspx" runat="server" Text="Page 2" />

答案 1 :(得分:0)

在Visual Studio中,单击“解决方案资源管理器”中的“项目名称”。执行此操作后,您将在名为Virtual Path的属性窗口下找到一个属性,其值为/dirvir。将其更改为/

答案 2 :(得分:0)

如果您不需要它作为服务器端链接,只需使用常规锚标记,让ASP.NET根据您的Web应用程序的虚拟目录找出正确的路径:

<a href="<%: ResolveURL("~/Page1.aspx")%>">Page 1</a>