【发布时间】:2016-07-26 10:48:09
【问题描述】:
如果我使用这样的页面方法:
[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,但我无法访问标签来设置它的值,如何从页面方法访问服务器控件?
【问题讨论】:
-
没办法,您无法通过 web 方法访问页面中的任何内容,因为页面没有经历执行一系列处理步骤的生命周期。其中包括初始化、实例化控件、恢复和维护状态、运行事件处理程序代码和渲染。
-
简单地说,你不能。 WebMethod 是服务器端。
标签: c# asp.net ajax webmethod pagemethods