我在解决方案中的~/Controls文件夹中拥有我的用户控件:
/Controls/TheControl.ascx
如果指定以下内容:
<a id="theId" runat="server" href="./?pg=1">link text</a>
ASP.Net似乎想要重写路径以指向绝对位置。例如,如果控件在site.com/products/fish/cans.aspx上,链接href将被重写为:
<a id="munged_theId" href="../../Controls/?pg=1>link text</a>
为什么Asp.Net会重写这些控件路径,有没有一种优雅的方法来解决它?
我只想让锚点控件按照我给定的内容输出!!! 这难道很难吗?
编辑:
我基本上已经按照Kelsey的建议做了。我知道我可以这样做,但是当我想要相对简单的东西时,我不喜欢在我的代码中添加标记。至少它解决了问题:
Aspx页面:
<asp:PlaceHolder ID="ph" runat="server"></asp:PlaceHolder>
代码后台:
var anchor = new HtmlGenericControl("a") { InnerText = "Previous" + " " + PageSize) };
anchor.Attributes["href"] = "?pg=" + (CurrentPage - 1);
anchor.Attributes["class"] = "prev button";
ph.Controls.Clear();
ph.Controls.Add(anchor);
从代码量上可以看出,对于本应该是简单且轻量级的锚点来说,这不是最优解。我知道我可以使用一个 Literal 但我认为这更加清晰,因为我添加了多个锚点。
我很想知道为什么 ASP.Net 接管并尝试修复我的 URL。