超链接控件未在ASP.NET中的ContentTemplate中显示

时间:2011-10-22 04:13:01

标签: c# asp.net

<ContentTemplate>
        <div class="detail_purchase_button">

            <a class="commandbutton" href='/Courses?RestoreFilters=1'>Return to Catalog</a>
            &nbsp;&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事件中运行(我将它放到一个方法中,然后我将它放到一个方法中)并引用一个公共的超链接字段。

感谢您的帮助。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

你的问题看起来有点模糊,但我试图根据我的理解来解答。如果我误解了你的问题,请忽略。

无法像这样添加超链接。首先在contenttemplate中放置一个占位符(即面板),然后从后面的代码中将超链接添加到占位符中。

        

        <a class="commandbutton" href='/Courses?RestoreFilters=1'>Return to Catalog</a>
        &nbsp;&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);

答案 2 :(得分:0)

尝试将ID设置为动态创建的linkAddToCart控件。您的代码没有为其定义ID。话虽如此,我建议按照安东尼建议的方式这样做。我认为不需要做这种事情。如果您想要在某些情况下显示某些逻辑,只需在标记中使用Visible="false"进行定义,并在需要时将其显示。