Мои решения UserControls находятся в папке ~ / 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 переписывает эти пути управления и существует ли элегантный способ исправить это?
Я просто хочу, чтобы элемент управления привязки выплевывал именно то, что я ему говорю !!! Это так сложно?
EDIT:
Я в основном сделал то, что предложил Келси. Я знал, что могу сделать это таким образом, но мне не нравится добавлять разметку в мой код, когда я хочу что-то относительно простое. По крайней мере, это решает проблему:
Страница 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.