我正在尝试在我的aspx页面上删除VB.NET按钮。尝试使用javascript和ajax来执行我的vb所拥有的相同代码。
我放入一个脚本管理器,将EnablePageMethods设置为true,添加了一个静态子例程,并在我的javascript函数中引用它(BTW - 这似乎只是执行现有子例程的很多工作)。 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按钮处理的,但是规范要求删除它。
我能以任何方式获得上述代码来完成它的工作吗?
谢谢, 杰森
答案 0 :(得分:2)
您不能在WebMethod或AjaxMethod中使用任何服务器控件,因为它们不是页面生命周期的一部分,请在Javascript中访问这些控件。