サーバー側のメソッドをjqueryで呼び出し、そのメソッドからテキストボックスのデータにアクセスしようとしています。これが私のサンプルコードです
[WebMethod]
public static PayPalCart CreatePayPalFields()
{
Page CurPage = HttpContext.Current.Handler as Page;
string tt = ((TextBox)CurPage.FindControl("txtBillAddress1")).Text;
}
静的メソッドからコントロールにアクセスするとエラーが発生し、エラー メッセージはObject reference not set to an instance of an objectです。次に、グーグルを検索してより良い解決策を見つけ、コントロールコレクションをループして、見つかった場合はコントロールを返す拡張メソッドを取得しました。コードは次のようになります
public static T BetterFindControl<T>(this Control root, string id) where T : Control
{
if (root != null)
{
if (root.ID == id) return root as T;
var foundControl = (T)root.FindControl(id);
if (foundControl != null) return foundControl;
foreach (Control childControl in root.Controls)
{
foundControl = (T)BetterFindControl<T>(childControl, id);
if (foundControl != null) return foundControl as T;
}
}
return null;
}
のような静的メソッドからも上記のルーチンを使用します
[WebMethod]
public static PayPalCart CreatePayPalFields()
{
Page CurPage = HttpContext.Current.Handler as Page;
string sData = CurPage.BetterFindControl<TextBox>("txtDeliveryFName").Text;
}
しかし、まだ運がありません....静的メソッドからコントロールにアクセスするために同じエラーが発生し、CurPageにコントロールがないことがわかりました。私は何をすべきか教えてください。メソッドは静的でなければならないため、静的メソッドからコントロールにアクセスする方法を教えてください.jqueryでそのメソッドを呼び出しています.........助けが必要です。