无法从静态方法显示ListBox中的值

时间:2016-04-29 12:12:57

标签: asp.net listbox webmethod

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;

1 个答案:

答案 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);