2016-05-03 5 views
0

私はいくつかのデータをサーバー側のVB.Netメソッドに供給するWebページにいくつかのAjaxを持っています。そのデータがサーバー側のメソッドに含まれたら、今収集したデータを使用するために別のサーバー側のメソッドを呼び出す必要があります。もちろん、VB.Net:共有サブから呼び出すサブ

' This method gets the input from the Ajax code on the web page. 
<System.Web.Services.WebMethod> _ 
Public Shared Sub GetAwesome(VBInputText As String) 
    Dim strTest As String = VBInputText 
    ' Now that we have collected input from the user, 
    ' we need to run a method that does a ton of other stuff. 
    DisplayAwesome(VBInputText) 
End Sub 

Protected Sub DisplayAwesome(AwesomeIn As String) 
    ' The real app does a lot more than this. For this example, it 
    ' just sets the text of a literal. 
    litAwesomeResult.Text = AwesomeIn 
End Sub 

上記の例DisplayAwesome(VBInputText)で私に「インスタンスメンバを参照することはできません...」というエラーを与える:ここでは本当に簡単な例です。だから、からPublic Shared Sub GetAwesomeに電話をかけることは可能ですか?私はこの種の解決策に近づくことを望んでいる。なぜなら、既に別の同僚によって書かれているので、アプリでうまくいくからだ。

+0

はGetAwesome 'の宣言()'から共有削除 – djv

答えて

1

残念ながら、ページメソッドDisplayAwesomeProtectedと定義されており、Protectedメソッドにアクセスするにはクラスのインスタンスが必要です。しかし、別のインスタンスの変更は現在のUIに反映されません。もう1つは、DisplayAwesomeを共有として作成することですが、今回は共有関数内のUI要素にアクセスできません。あなたはこのような状況で行うことができます

事は、(フロントエンドで)呼び出されるメソッドにデータを返すされており、このようなフォームクラスの名前でありlitAwesomeResult.Text

+0

そうそう、私はそれを避けるためにしようとしていました。基本的には、Ajax入力を取得した後に実行する必要がある 'doSave()'という膨大なメソッドがあります。だから、私はページに値を書いてから、大きな 'doSave()'を実行する必要があります。 – mrcoulson

+0

"ページメソッドDisplayAwesomeはProtectedとして定義されているため、"ページメソッドDisplayAwesomeは共有として定義されていないため、インスタンスが必要です... " – djv

+0

私の解決策は、したいと思っていますが、最低限の書き換えが必要です。 'doSave()'メソッドが接続された状態で、ページ上に隠れたボタン(ugh)を配置します。 Ajax関数が成功を受け取ると、JavaScriptを使用して 'doSave()'を呼び出すボタンをクリックします。私はそれが好きではありませんが、それは動作します。 – mrcoulson

0

コールサブハンドル:

FormName.DisplayAwesome(VBInputText) 

VB.Netでは、フォームが追加されたときに、VBアプリケーションフレームワークが作成し管理するオブジェクトのフォームタイプであるため、共有メソッドから共有されていないメソッドをフォームクラス名のデフォルトインスタンスで呼び出すことができますプロジェクトに

詳細情報については、これを参照してください。

VB.NET Default Form Instances

+0

これは 'shared'メソッドではないので、このようにすることはできません。メソッドにアクセスするためにインスタンスを作成する必要があります –

+0

別の共有メソッドから行うことができます!あなたはそれをテストすることができます! –

+0

どうすれば実現できるのか教えてください。 –