#c# #asp.net
#c# #asp.net
Вопрос:
<ContentTemplate>
<div class="detail_purchase_button">
<a class="commandbutton" href='/Courses?RestoreFilters=1'>Return to Catalog</a>
amp;nbsp;amp;nbsp;
<%# linkAddToCart %>
</div>
</ContentTemplate>
string url = "/Cart?AddItem={0}", DataItemID;
linkAddToCart = new HyperLink();
linkAddToCart.CssClass = "commandbutton";
linkAddToCart.NavigateUrl = url;
linkAddToCart.Text = "Add To Cart";
Кнопка в теге привязки отображается на странице. Однако кнопка гиперссылки вообще не отображается.
Второй блок кода выполняется в событии Page_Load (я помещу его в метод после того, как он заработает) и ссылается на общедоступное поле гиперссылки.
Спасибо за любую помощь.
Комментарии:
1. Здесь трудно догадаться. Пожалуйста, напишите небольшой и лаконичный код и протестируйте его на своей стороне или опубликуйте здесь, если возникнут какие-либо проблемы.
Ответ №1:
Определите элемент управления гиперссылками с помощью разметки в файле презентации.
<asp:HyperLink id="lnkAddToCart" runat="server" />
Разместите его там, где вам нужно. Вы все еще можете ссылаться на его свойства в своем коде.
lnkAddToCart.CssClass = "commandbutton";
lnkAddToCart.NavigateUrl = url;
// etc.
Если бы вместо этого вы определяли элемент управления динамически, вам нужно было бы добавить его в соответствующий контейнер, такой как панель или заполнитель
<asp:Panel id="theContainer" runat="server" /> or
<asp:PlaceHolder id="theContainer" runat="server" />
…
// define the HyperLink as in your original code snippet
theContainer.Controls.Add(lnkAddToCart);
Однако, если вам абсолютно не нужно динамически создавать элемент управления, лучше всего добавить его в ASPX во время разработки. Вы всегда можете установить Visible="false"
(в разметке, .Visible = false;
в коде), не нужно ли отображать его постоянно.
Ответ №2:
Ваш вопрос кажется немного расплывчатым, но я пытаюсь ответить на основе того, что я понимаю из него. Пожалуйста, проигнорируйте, если я неправильно понял ваш вопрос.
Невозможно добавить гиперссылку, подобную этой. Сначала поместите заполнитель (т. Е. панель) в contenttemplate, а затем добавьте гиперссылку в заполнитель из кода, находящегося за ним.
<a class="commandbutton" href='/Courses?RestoreFilters=1'>Return to Catalog</a>
amp;nbsp;amp;nbsp;
<asp:Panel id="pnlLink" runat="server"></asp:Panel>
</div>
</ContentTemplate>
А затем в коде, лежащем в основе
string url = "/Cart?AddItem={0}", DataItemID;
linkAddToCart = new HyperLink();
linkAddToCart.CssClass = "commandbutton";
linkAddToCart.NavigateUrl = url;
linkAddToCart.Text = "Add To Cart";
pnlLink.Controls.Add(linkAddToCart);
Ответ №3:
Попробуйте задать идентификатор для linkAddToCart
элемента управления, который вы создаете динамически. Ваш код не определяет для него идентификатор. С учетом сказанного, я бы рекомендовал сделать это так, как предложил Энтони. Я не вижу необходимости делать такого рода вещи. Если вы хотите иметь некоторую логику для отображения в определенных случаях, просто определите ее в своей разметке с помощью Visible="false"
и сделайте ее видимой, когда вам нужно.