我打電話給我的服務器端方法的jquery和從那個方法我想要訪問文本框數據。這是我的示例代碼關於從靜態方法訪問頁面控制的問題asp.net 4.0
[WebMethod]
public static PayPalCart CreatePayPalFields()
{
Page CurPage = HttpContext.Current.Handler as Page;
string tt = ((TextBox)CurPage.FindControl("txtBillAddress1")).Text;
}
我收到錯誤用於從靜態方法和錯誤消息訪問控制未設置爲一個對象的實例對象引用。然後我搜索谷歌找出更好的解決方案,然後我有一個擴展方法,將通過控制收集和返回控制,如果找到循環。的代碼是這樣
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調用該方法.........需要幫助。
您無法從webmethod訪問控件。 http://stackoverflow.com/questions/2133194/access-asp-net-control-from-static-webmethod-js-ajax-call只有在頁面的生命週期中,「Page」(及其所有控件)的一個實例被實例化。 –