0
私はこのようなページメソッドを使用する場合:ページメソッドからサーバーコントロールにアクセスするには?
[System.Web.Services.WebMethod]
public static string GetSearchResult(string searchKeyword)
{
ArrayList searchResultRows = new ArrayList();
Random random = null;
for (int resultCount = 0; resultCount < 10; resultCount++)
{
random = new Random(resultCount);
searchResultRows.Add(string.Concat(searchKeyword, random.Next().ToString()));
}
GridView resultRepeater = new GridView();
resultRepeater.DataSource = searchResultRows;
resultRepeater.DataBind();
StringBuilder stringBuilder = new StringBuilder();
System.IO.StringWriter textWriter = new System.IO.StringWriter(stringBuilder);
HtmlTextWriter htmlTextWriter = new HtmlTextWriter(textWriter);
resultRepeater.RenderControl(htmlTextWriter);
if (HttpContext.Current != null)
{
Page page = (Page)HttpContext.Current.Handler;
Label lbl = (Label)page.FindControl("lbl_test");//null
lbl.Text = searchResultRows[0].ToString();//exception
}
return stringBuilder.ToString();
}
ページメソッドからサーバーコントロールにアクセスするための方法、私は私の既存のラベルlbl_test
を更新したいが、私はそれが価値だ設定するラベルをアクセスすることはできません?
まさかページは、ライフサイクルを経由しないので、あなたはWebMethod属性からのページから何かをアクセスすることはできません一連の処理ステップを実行する。これには、初期化、コントロールのインスタンス化、状態の復元と維持、イベントハンドラコードの実行、レンダリングなどがあります。 –
単に、できません。 WebMethodはサーバー側です。 – Furtiro
@TimSchmelter:ありがとう –