如何从asp.net Page_Load中的响应HttpWebResponse更新asp:label?

我是vb.net和asp.net的新手。我正在尝试更新Page_Load中的asp:标签。标签的值来自所有Webservice。

vb.net代码:

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then lblMaxValue.Text = " Value is: " & GetRequestResponse(URL)

服务代码:

Private Sub GetRequestResponse(uri As Uri,callback As action(Of String))
    servicepointManager.SecurityProtocol = SecurityProtocolType.Tls12
    Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(uri),HttpWebRequest)

    request.Method = "GET"
    request.ContentType = "application/json"

    request.BeginGetResponse(
        Function(x)
            Using response As Httpwebresponse = DirectCast(request.EndGetResponse(x),Httpwebresponse)
                If callback Isnot Nothing Then

                    Dim reader As New StreamReader(response.GetResponseStream())
                    Dim streamText As String = reader.ReadToEnd()
                    callback(streamText)
                End If
            End Using
            Return 1
        End Function,Nothing)
End Sub

没有错误,但值没有更新。

dalezhuzhu 回答:如何从asp.net Page_Load中的响应HttpWebResponse更新asp:label?

一些选项:

  1. 使其同步;或
  2. 使用ScriptManager,更新面板,计时器和会话变量;或
  3. 按如下方式使用AddOnPreRenderCompleteAsync(以及进一步的described here):

aspx页面:

<%@ Page Language="VB" Async="true" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="lblMaxValue" runat="server" Text="Label"></asp:Label>
        </div>
    </form>
</body>
</html>

后面的代码:

Imports System.Net
Imports System.IO

Partial Class Default2
    Inherits System.Web.UI.Page

    Private _request As HttpWebRequest

    Protected Sub Page_Load(sender As Object,e As EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Dim uri As New Uri("http://api.open-notify.org/astros.json")
            _request = HttpWebRequest.Create(uri)
            AddOnPreRenderCompleteAsync(New BeginEventHandler(AddressOf GetRequestResponse),New EndEventHandler(AddressOf EndAsyncOperation))
        End If
    End Sub
    Protected Function GetRequestResponse(ByVal sender As Object,ByVal e As EventArgs,ByVal cb As AsyncCallback,ByVal state As Object) As IAsyncResult
        Return _request.BeginGetResponse(cb,state)
    End Function

    Private Sub EndAsyncOperation(ByVal ar As IAsyncResult)
        Dim text As String

        Using response As WebResponse = _request.EndGetResponse(ar)

            Using reader As StreamReader = New StreamReader(response.GetResponseStream())
                text = reader.ReadToEnd()
            End Using
        End Using

        lblMaxValue.Text = " Value is: " & text
    End Sub

End Class
本文链接:https://www.f2er.com/3163630.html

大家都在问