从javascript执行VB WebMethod

时间:2011-05-31 17:40:15

标签: asp.net ajax vb.net webmethod

我正在尝试在我的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按钮处理的,但是规范要求删除它。

我能以任何方式获得上述代码来完成它的工作吗?

谢谢, 杰森

1 个答案:

答案 0 :(得分:2)

您不能在WebMethod或AjaxMethod中使用任何服务器控件,因为它们不是页面生命周期的一部分,请在Javascript中访问这些控件。