问题描述
|
我正在尝试消除我的aspx页面上的VB.NET按钮。尝试使用javascript和ajax执行我的vb所具有的相同代码。
我放入一个脚本管理器,将EnablePageMethods设置为true,添加了一个静态子例程,并在我的javascript函数中引用了它(顺便说一句,这似乎是执行现有子例程的大量工作)。 javascript调用了我的后台代码,并且几乎可以正常工作。
问题是,当SimulatePrintBatchClick尝试对控件执行任何操作时,我现在收到NullReferenceException。
错误是“对象引用未设置为对象的实例”,行是“ pnlVars.Controls.Clear”
这是UW.aspx的代码:
<WebMethod()> _
Public Shared Sub PrintBatchFromJSWM()
Dim UWI As New UW
UWI.SimulatePrintBatchClick()
End Sub
Sub SimulatePrintBatchClick()
Dim Client As New LetterWriterClient
\'Run ExStream and get the PDF File
Globals.PDF_Data = Nothing
Globals.PDF_Data = Client.ProcessDatFile(Session(\"SessionID\").ToString)
\'Reload the form -- turn off all controls,initialize variables and make the PDF iFrame visible
pnlVars.Controls.Clear() \'Bombs out on THIS line of code
pnlPDF.Visible = True
Me.SendToBach.Visible = False
Session.Contents(\"LetterVariables\") = Nothing
Session.Contents(\"PolicyInformation\") = Nothing
Session.Contents(\"Submitted\") = True
Response.Redirect(\"UW.aspx\")
End Sub
有趣的是,当我在PrintBatch_Click中运行以上代码时,所有代码都可以正常执行。我真的不明白为什么它会作为子例程爆炸。
也许这不是做到这一点的方法,但是我迷失了寻找另一种方法的方法。最初,此代码是由ASP / VB按钮处理的,但规范要求将其删除。
我可以通过上面的代码来完成这项工作吗?
谢谢,
杰森
解决方法
您不能在WebMethod或AjaxMethod中使用任何服务器控件,因为它们不是Page生命周期的一部分,请使用Javascript访问这些控件。