On Static WebMethod我无法获得ListBoxcontrol,因此我将该控件存储在Page_Load事件的会话中:
app.post('/image', function(req, res) {
var file = fs.createWriteStream('./test-image.png');
var stream =
gm(req)
.size({ bufferStream: true }, function(err, size) {
if (size.width > 2000) {
return res.send('Too big, aborting upload!');
}
this.stream().pipe(file);
res.send('Saving image to disk');
});
在调用WebMethod后,我从数据库中获取值并尝试填充ListBox但ListBox没有显示任何值。 以下是硬编码的测试代码,可以在Page_Load上正常工作,但在WebMethod中没有,请告诉我哪里出错?
HttpContext.Current.Session["LB_AvailFields"] = lbavailablefields;
答案 0 :(得分:2)
WebMethod概念是为您提供类似体验的快速Web服务。该页面不存在于服务器上,就像Page_Load工作时一样。预期用途是从客户端脚本调用Web方法,将数据返回到客户端并在那里使用(javascript)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public MyReturnResultObject[] GetListBoxData()
{
List<MyReturnResultObject> result = new List<MyReturnResultObject>();
loop to fill your return result
{
var oneResult = new MyReturnResultObject();
...
result.Add(oneResult);
}
return result.toArray();
}
然后在客户端,使用javascript调用该方法,只需使用返回的json填充列表框(使用javascript)。有很多方法可以在javascript中执行此操作,显示最基本的;如果您可以使用jQuery,则可以使用它。
var myList = ...; // obtain a reference to your list box
var anOption;
loop through json
anOption = document.createElement("Option");
anOption.text = ...; //from json
anOption.value = ...; //from json
myList.add(anOption);