如何在代码后面的回调函数中更新标签?

时间:2015-06-07 17:41:08

标签: c# html asp.net visual-studio-2010 callback

我的ASP.NET项目调用REST-Client库函数,该回调应该调整标签。但是在调用回调后,asp标签不会更改或更新。回调可能吗?

Default.aspx的:

<asp:UpdatePanel runat="server" id="UpdatePanel1">
    <ContentTemplate>
        <asp:Button OnClick="connect" Text="Connect" runat="server" />
        <asp:Label runat="server" Text="Label to be changed" id="Label1">
        </asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

Default.aspx.cs:

public void connect(object sender, EventArgs e)
{
    Program restCLient = new Program();
    restCLient.startConnection(writeToConsole);
}

public void writeToConsole(string str)
{
    Label1.Text = str;
}

Programm.cs:

public void startConnection(Action<string> callbackLog)
{
    callbackLog("result");
}

1 个答案:

答案 0 :(得分:1)

在startConnection中没有引用Label1,它将有一个新实例。最好的方法是从startConnection返回一个字符串,并在connect()方法中更改标签。

一种解决方法是将调用页面实例作为参数发送到startConnection方法,并在该参数上调用方法。假设您的页面类被称为Default,而Programm.cs在同一个应用程序中,您可以使用以下内容:

public void startConnection(ref Default callingPage)
{
    callingPage.writeToConsole("result");
}

然后你会调用这样的方法:

restCLient.startConnection(this);