我的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");
}
答案 0 :(得分:1)
在startConnection中没有引用Label1,它将有一个新实例。最好的方法是从startConnection返回一个字符串,并在connect()方法中更改标签。
一种解决方法是将调用页面实例作为参数发送到startConnection方法,并在该参数上调用方法。假设您的页面类被称为Default,而Programm.cs在同一个应用程序中,您可以使用以下内容:
public void startConnection(ref Default callingPage)
{
callingPage.writeToConsole("result");
}
然后你会调用这样的方法:
restCLient.startConnection(this);