【问题标题】:How to dynamically update image url from code behind如何从后面的代码动态更新图像 url
【发布时间】:2017-10-09 06:10:54
【问题描述】:

我有这个页面:

<form id="form1" runat="server">
   <asp:Image id="imgLogo" runat="server" />

   <div class="content">
       <asp:ScriptManager ID="scrptMan" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="updChooser" runat="server">
            <ContentTemplate>
                <h3>Company name</h3>
                <asp:DropDownList ID="ddCompany" runat="server" DataTextField="CompanyName" DataValueField="Id" AutoPostBack="true" OnSelectedIndexChanged="ddCompany_OnSelectedIndexChanged"></asp:DropDownList>
                <h3>Year</h3>
                <asp:DropDownList ID="ddYear" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddYear_OnSelectedIndexChanged"></asp:DropDownList>
                <asp:Literal ID="ltAdvice" runat="server"></asp:Literal>
                <strong><asp:Literal ID="ltYear" runat="server"></asp:Literal></strong>
                <asp:Panel ID="pnlNext" runat="server" Visible="false">
                    <div class="submit">
                        <asp:Button ID="btnNext" runat="server" Text="Next" CssClass="button" OnClick="btnNext_OnClick"/>
                    </div>
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
</form>

如果用户选择公司,我想从代码后面动态更新徽标图像,像这样

    private void FillLogo(int companyId)
    {
        //temporary

        byte[] logo = File.ReadAllBytes(@"D:\temp\images\baseLogo.png");

        if (clientId > 0 && File.Exists(@"D:\temp\images\companies\" + companyId + ".png"))
        {
            logo = File.ReadAllBytes(@"D:\temp\images\companies\" + companyId+ ".png");
        }

        imgLogo.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(logo);
    }

我在 ddCompany_OnSelectedIndexChanged 方法和 OnPreRender 方法中使用正确的公司 ID 调用此方法,但第一次加载徽标并且 ddCompany 中的任何更改都不会更新。 有可能实现吗?

【问题讨论】:

    标签: c# asp.net image webforms code-behind


    【解决方案1】:

    这可能是因为您的图像控件不在更新面板内。面板的重点是只更新页面的一部分 -> 里面的任何内容。

    尝试在更新面板内移动图像控件,或者可能有一个设置可以添加到更新面板...'条件'?或者可能相反,现在不确定。先看看它是否适用于面板内的图像。

    [想知道:你能不能只做imgLogo.ImageUrl = @"D:\temp\images\companies\" + companyId+ ".png";]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多