【发布时间】:2026-02-11 05:10:01
【问题描述】:
每当执行后端的函数时,我都会使用 UpdatePanel 来填充进度条。用户首先必须上传一个 csv 文件。一旦 csv 文件被上传并临时保存,用户然后按下另一个按钮(我们称之为“更新和查看”),该按钮运行一系列函数来清理 csv 文件并将其转换为 json 文件。一些 csv 文件很大,很难判断 csv 在执行时运行的是哪个函数。
但是,问题是每次用户按下“更新和查看”按钮时,什么都没有发生。我从控制台收到一个错误,指出对象引用未设置为对象的实例。
由于我的按钮在 UpdatePanel 之外,所以我确保在 UpdatePanel 中进行了设置。我确定了 EventName="click"。对于 UpdatePanel,我确定了我的 UpdateMode="Conditional",因为我只希望在函数完成运行时填充进度条。我设置了 ChildrenAsTriggers="true" - 是否将此设置更改为“false”并不重要。按钮仍然没有执行我做的功能。此外,我在我的 aspx 页面中确保 Async="true"。我使用 asp:AsyncPostBackTriggers 而不是 asp:PostBackTriggers。我想知道这是否是问题所在,但我不相信这是因为我试图在更新前端进度条的同时运行后端。下面是来自后端(vb)的示例代码和来自前端的示例代码。
Protected Sub BtnUpload_Click(sender As Object, e As EventArgs)
statusLabel.Text = ""
While statusLabel.Text = ""
statusLabel.Text = Test_CSV()
Try
loadbar.Style("width") = "10%"
updateP.Update()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
statusLabel.Text = Save_CSV()
statusLabel.Text = Create_tables("fileOne")
statusLabel.Text = Transfer_Tables("fileOne")
statusLabel.Text = Update_Tables("fileOne")
statusLabel.Text = Query_JSON()
End While
FileUploadControl.Enabled = False
BtnUpload.Enabled = False
FileUploadControl.Visible = False
BtnUpload.Visible = False
Response.Redirect("/summary/filesummary.aspx")
End Sub
<div class="row" style="padding-left: 0; padding-top: .5em;">
<div class="col-md-12">
<label class="file-upload">
<span id="selectcsv" runat="server">Select CSV File
<asp:FileUpload ID="FileUploadControl" runat="server"
onchange="document.getElementById('uploadText').style.display =
'block';showFile();document.getElementById('instruction').style.display =
'none';" CssClass="hidden" /></span>
</label>
</div>
</div>
<div class="row" style="margin-bottom: 1em;">
<div class="col-md-12">
<label class="file-upload" id="uploadText" style="display: none;">
<span>Update and view results</span>
<asp:Button runat="server" ID="BtnUpload" OnClick="BtnUpload_Click" CssClass="hidden"/>
</label>
<asp:Label CssClass="label" runat="server" ID="statusLabel"></asp:Label>
</div>
</div>
<asp:UpdatePanel id="updateP" runat="server" UpdateMode="Conditional"
ChildrenAsTriggers="false">
<ContentTemplate>
<div role="progressbar" class="progress-bar" id="loadbar"
style="width: 0%" aria-valuemin="0" aria-valuemax="100"
runat="server"></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnUpload"
EventName="click" runat="server"/>
</Triggers>
</asp:UpdatePanel>
我放了一个 try/catch 语句,看看能否得到更详细的错误框,但什么也没出现。我至少希望我的进度条填充 10%(它基于宽度的样式属性。我没有详细显示任何 css 类,但是当您更改宽度时,进度条会着色)。但是,再次没有发生任何事情我有错误在哪里
对象引用未设置为对象的实例。
错误发生在 MAjax 的第 1 行。我不确定这意味着什么。
【问题讨论】:
-
代码
MAjax在哪里 -
这是您检查页面时出现的错误。就是这样:Sys.WebForms.PageRequestManagerServerErrorException:对象引用未设置为对象的实例。在 Function.Error.create (MsAjaxJs?v=D6VN0fHlwFSIWjbVzi6mZyE9Ls-4LNrSSYVGRU46XF81:1)
标签: javascript sql-server vb.net asynchronous