异步删除显示数据的问题

时间:2018-08-26 18:05:19

标签: c# asp.net webforms async-await

我正在测试以下代码以显示数据,然后在一段时间后使用异步将其删除。

我遇到的问题是我想显示标签和文本,然后执行异步操作,但是异步操作在代码的第一部分之前运行。

有没有一种方法可以先运行代码,然后再进行异步等待?

<form id="form1" ondatabound="Page_Load()" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label" Visible="false"></asp:Label><br /><br />
        <asp:Button ID="Button1" class="btn btn-error" OnClick="Button1_Click" runat="server" Text="Button" /><br /><br />
        <asp:TextBox ID="TextBox1" ReadOnly="false" Text="" Visible="true" runat="server"></asp:TextBox><br /><br />
        <asp:TextBox ID="TextBox2" ReadOnly="false" Text="" Visible="true" runat="server"></asp:TextBox><br />
    </div>
</form>
public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //TextBox1.Text = "TestEmail";
        //TextBox2.Text = "TestPassword";
    }

    //When Button1 is clicked then show/hide the title label
    protected void Button1_Click (object sender, EventArgs e)
    {
        if (Label1.Visible == false)
        {
            Label1.Visible = true;
            Label1.Text = "Please use this link to login: www.test.com";
            TextBox1.Text = "TestingData";
        }
        else
            Label1.Visible = false;
        ClearMessages();
    }

    public async Task SyncTest()
    {
        await Task.Delay(5000); // 5 second delay
        this.ClearMessages();
    }

    protected void ClearMessages()
    {
        TextBox1.Text = "";
        TextBox2.Text = "";
        Label1.Text = "";
    }
}

2 个答案:

答案 0 :(得分:1)

我在评论中提到。呈现页面后,后端就不再与该页面建立连接,因此无法清空文本。解决此问题的更好方法是在客户端使用

调用脚本在客户端进行清理
var data = []; // [] is an array

这将调用下面的方法,该方法将在5秒钟后清空textbox1。

Page.ClientScript.RegisterStartupScript(GetType(), "cleanText", "cleanText());", true);

答案 1 :(得分:0)

关于您的概念和问题:

  

...在一定时间后,使用async [或等待的Task]删除[数据]。

     

有没有一种方法可以[渲染页面],然后执行async await

据我所知,async awaitTask并没有跨Page Lifecycles的框架支持,更不用说在渲染/卸载页面上编写机制了,所以答案可能是


但是,使用ASP.NET AJAX Extensions对WebForm应用程序提供了异步支持。您可以使用Partial Page Updates实现所需的行为(以异步方式处理控件属性更改的代码)。