Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本框赢得';t更新_C#_Asp.net_Textbox_Updatepanel - Fatal编程技术网

C# 文本框赢得';t更新

C# 文本框赢得';t更新,c#,asp.net,textbox,updatepanel,C#,Asp.net,Textbox,Updatepanel,我在aspx页面的更新面板中有一个文本框 这是我的代码: 场景1: protected void UploadPromoFilesButton_Click(object sender, EventArgs e) { try { YoutubeStatusLabel.Text = "Starting upload..."; //UpdatePanel.Update(); if (!string.IsNullOrEmpty(UrlTag

我在aspx页面的更新面板中有一个文本框

这是我的代码:

场景1:

protected void UploadPromoFilesButton_Click(object sender, EventArgs e)
{
    try
    {
        YoutubeStatusLabel.Text = "Starting upload...";
        //UpdatePanel.Update();
        if (!string.IsNullOrEmpty(UrlTagTextBox.Text))
        {
            var Movie = Vitagamer.Movies.DB.DBUtilities.Get.ByUrlTag(UrlTagTextBox.Text);
            //Movie.UploadPromo();
        }
        else
        {
            //Vitagamer.Movies.PromotionHelper.Youtube.Execute.UploadAllPromoVideos();
        }
        System.Threading.Thread.Sleep(5000);
        YoutubeStatusLabel.Text = "Files were uploaded successfully.";
    }
    catch (Exception Ex)
    {
        YoutubeStatusLabel.Text = Ex.Message;
    }
}
第二幕:

protected void UploadPromoFilesButton_Click(object sender, EventArgs e)
{
    try
    {
        YoutubeStatusLabel.Text = "Starting upload...";
        UpdatePanel.Update();
        if (!string.IsNullOrEmpty(UrlTagTextBox.Text))
        {
            var Movie = Vitagamer.Movies.DB.DBUtilities.Get.ByUrlTag(UrlTagTextBox.Text);
            //Movie.UploadPromo();
        }
        else
        {
            //Vitagamer.Movies.PromotionHelper.Youtube.Execute.UploadAllPromoVideos();
        }
        System.Threading.Thread.Sleep(5000);
        YoutubeStatusLabel.Text = "Files were uploaded successfully.";
    }
    catch (Exception Ex)
    {
        YoutubeStatusLabel.Text = Ex.Message;
    }
}
在这两种情况下,我从未看到开始上传文本,但我看到文件成功上传文本


如何让用户知道上载正在开始,因为这可能需要一段时间。我不能使用进度条,因为我使用的是youtube api,它使用的是同步。上传。我不需要进度条,我只想查看一个文本,以了解用户上传已经开始。怎么做?谢谢。它不会立即更新面板。执行整个方法,然后您会看到成功上传的消息,因为这是您最后设置文本的内容

要查看此操作,请尝试删除此行:

YoutubeStatusLabel.Text = "Files were uploaded successfully.";

但是,在完成后,它会说“开始上传”。那不好!因此,使用客户端脚本设置“开始上传…”文本。

它不会立即更新面板。执行整个方法,然后您会看到成功上传的消息,因为这是您最后设置文本的内容

要查看此操作,请尝试删除此行:

YoutubeStatusLabel.Text = "Files were uploaded successfully.";

但是,在完成后,它会说“开始上传”。那不好!因此,请使用客户端脚本设置“开始上载…”文本。

您看不到文本的原因是您从未将信息发送回用户

从本质上讲,这个过程是这样的:

  • 您的请求进入服务器
  • 服务器处理请求并创建所有HTML文本(此时该方法已完全运行,因此
    YoutubeStatusLabel.text
    将是在
    UploadPromoFilesButton\u单击
    方法中设置的最后一个内容)
  • HTML文本被发送回客户端
如果要显示中间文本,则需要在客户端(JavaScript)上设置值,或者向服务器进行多次回发。最后一个选项也需要JavaScript


我将研究signer以获得更高级的客户机-服务器通信

您没有看到文本的原因是您从未将信息发送回用户

从本质上讲,这个过程是这样的:

  • 您的请求进入服务器
  • 服务器处理请求并创建所有HTML文本(此时该方法已完全运行,因此
    YoutubeStatusLabel.text
    将是在
    UploadPromoFilesButton\u单击
    方法中设置的最后一个内容)
  • HTML文本被发送回客户端
如果要显示中间文本,则需要在客户端(JavaScript)上设置值,或者向服务器进行多次回发。最后一个选项也需要JavaScript


我将研究signer以获得更高级的客户机-服务器通信

您将看不到对
YoutubeStatusLabel.Text的第一次更新,因为您的代码正在服务器上执行,尚未返回到浏览器

这本书值得一读


我不认为通知用户上传已经开始,然后在5秒后再次通知有什么好处。我会将文本设置为
开始上传…
,然后进行回调,将标签更新为
成功上传的文件。
过程完成后。请参见您将不会看到对
YoutubeStatusLabel.Text的第一次更新,因为您的代码正在服务器上执行,尚未返回到浏览器

这本书值得一读


我不认为通知用户上传已经开始,然后在5秒后再次通知有什么好处。我会将文本设置为
开始上传…
,然后进行回调,将标签更新为
成功上传的文件。
过程完成后。如果您只是想让用户知道正在上载文件,请参见:这里有一种方法,无需编写太多特殊的客户端或服务器代码

由于您已经有了UpdatePanel,现在只需添加一个带有精美图像和标题的UpdateProgress:

ASPX:
以及。

如果您只是想让用户知道正在上载文件:这里有一种方法,无需编写太多特殊的客户端或服务器代码

由于您已经有了UpdatePanel,现在只需添加一个带有精美图像和标题的UpdateProgress:

ASPX:
还有。

难道没有办法在服务器端完成吗?好的经验法则:不要在服务器端做应该在客户端完成的事情。但是如果你真的想去那里,那么是的,有。学习AJAX并构建服务器端消息队列。让AJAX(或者更好,试试)获取消息,然后显示它们。如果希望以良好的格式显示它们,请使用通知库,例如。如果您决定了AJAX路线,我建议使用使其更容易。是否有一种方法可以在服务器端完成它?好的经验法则:不要在服务器端做应该在客户端完成的事情。但是如果你真的想去那里,那么是的,有。学习AJAX并构建服务器端消息队列。让AJAX(或者更好,试试)获取消息,然后显示它们。如果希望以良好的格式显示它们,请使用通知库,例如。如果您决定AJAX路线,我建议使用以使其更容易。