Asp.net UpdateProgress中的随机图像

Asp.net UpdateProgress中的随机图像,asp.net,ajax,Asp.net,Ajax,我在updatepanel中有一个向导控件。一些向导步骤需要几秒钟才能显示,因此我想在加载时显示updateprogress控件。这是可行的,但我希望在每个向导步骤之间的progresstemplate中显示不同的图像(从文件夹中选择的随机图像) 我可以访问图像控件并更改ImageUrl,但progresstemplate从不更新。它保留从第一次加载时选择的第一个随机图像 我尝试过在PageLoad上更新imageUrl,也尝试过重写Render()方法,但两者都不起作用 <asp:Upd

我在updatepanel中有一个向导控件。一些向导步骤需要几秒钟才能显示,因此我想在加载时显示updateprogress控件。这是可行的,但我希望在每个向导步骤之间的progresstemplate中显示不同的图像(从文件夹中选择的随机图像)

我可以访问图像控件并更改ImageUrl,但progresstemplate从不更新。它保留从第一次加载时选择的第一个随机图像

我尝试过在PageLoad上更新imageUrl,也尝试过重写Render()方法,但两者都不起作用

<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="500" >
    <ProgressTemplate>
        <div class="modalWrapper">
            <div class="updateProgress">
                <asp:Image ID="imgLoading" runat="server" AlternateText="Loading..." />
            </div>
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>
还尝试:

protected override void Render(HtmlTextWriter writer)
    {          
        System.Web.UI.WebControls.Image img = (System.Web.UI.WebControls.Image)UpdateProgress1.FindControl("imgLoading");

        if (img != null)                       
            img.ImageUrl = PickImageFromDirectory("~/images/loaders/"); //returns "~/images/loaders/randomimage.gif"

        base.Render(writer);
    }

您可以指定指向aspx页面的url:

<asp:Image runat="server" ImageUrl="GenerateImage.aspx"/>

您可以指定指向aspx页面的url:

<asp:Image runat="server" ImageUrl="GenerateImage.aspx"/>

由于UpdateProgress位于UpdatePanel之外,因此很可能不会重新加载图像。UpdatePanel的本质是在异步请求时仅更新其中的控件。=)

以下是您可以做的:

PickImageFromDirectory
更改为静态方法,并在代码隐藏中将其标记为WebMethod:

[WebMethod]
public static string PickRandomImage()
{
   // Logic to return the full path to a random image
}
然后,在客户端的底部放置以下脚本:

<script type="text/javascript">
function requestEnded()
{
   PageMethods.PickRandomImage(imageSuccess, imageFailed);
}

function imageSuccess(result,ctx,methodName)
{
  document.getElementById('<%= imgLoading.ClientID %>').src = result;
}

function imageFailed(err,ctx,methodName)
{
  alert(err);
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestEnded);
</script>

函数requestEnded()
{
PageMethods.PickRandomImage(imageSuccess,imageFailed);
}
函数imageSuccess(结果、ctx、方法名)
{
document.getElementById(“”).src=结果;
}
函数imageFailed(错误、ctx、方法名)
{
警惕(err);
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestEnded);

在每次异步回发之后,这将调用服务器端web方法并将图像src设置为随机url。=)

由于UpdateProgress位于UpdatePanel之外,因此很可能不会重新加载图像。UpdatePanel的本质是在异步请求时仅更新其中的控件。=)

以下是您可以做的:

PickImageFromDirectory
更改为静态方法,并在代码隐藏中将其标记为WebMethod:

[WebMethod]
public static string PickRandomImage()
{
   // Logic to return the full path to a random image
}
然后,在客户端的底部放置以下脚本:

<script type="text/javascript">
function requestEnded()
{
   PageMethods.PickRandomImage(imageSuccess, imageFailed);
}

function imageSuccess(result,ctx,methodName)
{
  document.getElementById('<%= imgLoading.ClientID %>').src = result;
}

function imageFailed(err,ctx,methodName)
{
  alert(err);
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestEnded);
</script>

函数requestEnded()
{
PageMethods.PickRandomImage(imageSuccess,imageFailed);
}
函数imageSuccess(结果、ctx、方法名)
{
document.getElementById(“”).src=结果;
}
函数imageFailed(错误、ctx、方法名)
{
警惕(err);
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestEnded);
在每次异步回发之后,这将调用服务器端web方法并将图像src设置为随机url。=)