【问题标题】:asp:Image not displaying within an asp:HyperLinkasp:图像未在 asp:HyperLink 中显示
【发布时间】:2011-11-18 22:56:24
【问题描述】:

我在 asp:HyperLink 中有一个未显示的 asp:Image。这是aspx。

<asp:HyperLink ID="hlSubmitSrf" runat="server" Target="_blank">
    <asp:Image runat="server" ID="imgSrf" />
</asp:HyperLink>      

这是代码隐藏。 Page_Init 设置超链接文本、url、图像 url 和图像的 alt 文本。

        if (srf.Count > 0)
        {
            actionText = "View active SRF";
            hlSubmitSRF.Text = actionText;
            hlSubmitSRF.NavigateUrl = "SRF_Submit.aspx?SRF_ID=" + srf[0].Srf_id.ToString();                
            imageUrl = "images/Arrow_Right_Red.png";
        }
        else
        {
            actionText = "Submit SRF";
            hlSubmitSRF.Text = actionText;
            hlSubmitSRF.NavigateUrl = "SRF_Submit.aspx?APPID=" + app.Appid.ToString();                
            imageUrl = "images/Arrow_Right_Green.png";
        }

        imgSrf.ImageUrl = imageUrl;
        imgSrf.AlternateText = actionText;

如果我将图像移到 asp:HyperLink 之外,则会显示图像,所以我知道路径有效。如果我将它保存在 asp:HyperLink 中,当我查看页面源时,图像甚至不会显示。

【问题讨论】:

  • 当我在 aspx 上设置 imageurl 时,图像会显示。但是,当我尝试将其更改为代码隐藏中的其他内容时,它不会。这是我对页面生命周期不理解的事情吗?

标签: c# asp.net


【解决方案1】:

尝试以下方法:

hlSubmitSRF.ImageUrl = imageUrl;

在 HyperLink 上设置 ImageUrl,不要在 &lt;asp:HyperLink&gt; 中添加 &lt;asp:Image&gt;

<asp:HyperLink ID="hlSubmitSrf" runat="server" Target="_blank"></asp:HyperLink>     

    if (srf.Count > 0)
    {
        actionText = "View active SRF";
        hlSubmitSRF.Text = actionText;
        hlSubmitSRF.NavigateUrl = "SRF_Submit.aspx?SRF_ID=" + srf[0].Srf_id.ToString();                
        hlSubmitSRF.ImageUrl = "images/Arrow_Right_Red.png";
    }
    else
    {
        actionText = "Submit SRF";
        hlSubmitSRF.Text = actionText;
        hlSubmitSRF.NavigateUrl = "SRF_Submit.aspx?APPID=" + app.Appid.ToString();                
        hlSubmitSRF.ImageUrl = "images/Arrow_Right_Green.png";
    }

【讨论】:

  • 应该提到我已经尝试过了。在超链接上设置 imageUrl 会导致超链接文本不显示。显然图像优先于文本。
【解决方案2】:

您是否尝试过使用图像按钮?我面前没有代码,但可以根据您的条件调整字段,类似于您使用超链接包装器的方式。

【讨论】:

  • 我考虑过了,可能最终会使用它,以防我无法让这种方法发挥作用。我不想有一个服务器端 onClick 事件只是为了将用户发送到另一个页面。
  • 也许你可以使用两个超链接,让一个在第一个条件下可见,或者第二个在第二个条件下可见?也许不是最佳编码实践,但可以帮助您显示图像。 HTH
【解决方案3】:

尽量不要在 page_init 中设置超链接文本。 .Text 属性可能会替换图像(或使其不可见)。超链接还有一个方便的 .ImageUrl 属性(只要你不使用 url 路由)。

HTH

【讨论】:

    【解决方案4】:

    我不确定您是否可以在 asp:HyperLink 控件中同时包含文本和图像,但是以下内容会起作用,例如:

    HtmlImage imgSrf = new HtmlImage();
    HtmlAnchor hlSubmitSRF = new HtmlAnchor();
    HtmlGenericControl hlSubmitSRFText = new HtmlGenericControl("span");
    if (srf.Count > 0) {
        actiontext = "View active SRF";
        hlSubmitSRF.HRef = "SRF_Submit.aspx?SRF_ID=" + srf(0).Srf_id.ToString();
        imgSrf.Src = "images/Arrow_Right_Red.png";
    } else {
        actiontext = "Submit SRF";
        hlSubmitSRF.HRef = "SRF_Submit.aspx?APPID=" + app.Appid.ToString();
        imgSrf.Src = "images/Arrow_Right_Green.png";
    }
    imgSrf.Alt = actiontext;
    hlSubmitSRF.Controls.Add(imgSrf);
    hlSubmitSRFText.InnerHtml = actiontext;
    hlSubmitSRF.Controls.Add(hlSubmitSRFText);
    ParentControl.Controls.Add(hlSubmitSRF);
    

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2011-09-26
      • 2015-10-30
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多