1
我写了一个webmethod,它返回用户列表,虽然服务工作正常,但当我从页面调用它时,webservice中的方法返回类型为void。方法返回值在silverlight中显示为void
我写了一个webmethod,它返回用户列表,虽然服务工作正常,但当我从页面调用它时,webservice中的方法返回类型为void。方法返回值在silverlight中显示为void
您可能会被抛出的是,必须异步处理Silverlight中的Web服务调用。
当你定义一个WebMethod时,比如说你有一个名为WorkMan的类叫做DoWork。您在Silverlight的代码最终会看起来像:
WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(this.DoWorkCompleteHandler); // where DoWorkCompletedHandler handles the callback.
然后你打电话给你的实际方法,并允许回调处理结果。
client.DoWorkAsync();
如果你的webmethod返回一个值,你的EventArg对象将有一个Result属性,你可以利用它的结果。
最后一点:个人风格的东西,但我喜欢lambda表达式,而不是为回调生成一个全新的方法。我可能会写如下内容:
WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += (s,e) => {
if(e.Result != null){
object foo = e.Result;
}
};
client.DoWorkAsync();
我很抱歉,但这剂量对我有效,我仍然无法从方法中获得值。 – 2009-04-14 12:12:58