0

固定パスと固定ファイル名00.jpgで画像を継続的に変更するデスクトップアプリケーションを作成しました。画像は私のWebサイトフォルダのパスにあります。画像はブラウザで。によって表示されます。しかし、画像はブラウザ上で継続的に変化していません。

クライアント(javascript)とサーバー(asp.net)の両方のタイマーを使用してみましたが、結果が得られません。これが私のASP.netAJAXタイマーコードとマークアップです:

<form id="form1" runat="server">
    <div>
        <asp:ScriptManager runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:Image ImageUrl="00.jpg" ID="img1" runat="server" />
            <asp:Timer ID="Timer1" runat="server" Interval="100" ontick="Timer1_Tick"></asp:Timer>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        </asp:UpdatePanel>            
    </div>
</form>

protected void Timer1_Tick(object sender, EventArgs e)
{
    string xx = Request.Url.AbsoluteUri;
    xx = xx.Replace ("Default.aspx","00.jpg");
    img1.ImageUrl = xx; up1.Update();
}
4

2 に答える 2

1

画像のキャッシュの問題が疑われます。たぶん、この画像のキャッシュを無効にするか、次のコマンドで一意のURLを作成してみてください。

protected void Timer1_Tick(object sender, EventArgs e)
{
    img1.ImageUrl = Page.ResolveUrl("~/00.jpg?x=" + DateTime.Now.Ticks.ToString()); 
    up1.Update();
}

ただし、実際には、純粋なjavascript(必要に応じてjQueryなどを使用)ソリューションの使用を検討する必要があります。これにより、サーバーのラウンドトリップが回避されます。

この投稿では、ソリューションの必要性を正確に説明しています。

于 2012-06-15T08:12:31.927 に答える
0

UpdatePanelは、サーバーとの通信時に多くのオーバーヘッドを使用します。したがって、可能であれば、ScriptManagerとUpdatePanelを削除し、代わりにJQueryを使用してください。単純な<img>タグを付けて、JQueryに画像を更新させることができます。

どういうわけか画像のファイル名を変更できる場合(たとえば、ファイル名の最後に日付と時刻を追加する)、キャッシュの問題を克服するために特別なことをする必要はありません。画像。

例えば。http://www.phpfreaks.com/forums/index.php?topic=253852.0またはhttps://www.google.com/search?btnG=1&pws=0&q=jquery+img

于 2012-06-15T08:18:17.267 に答える