将参数传递给WCF服务调用的方法

本文关键字:调用 方法 服务 WCF 参数传递 | 更新日期: 2023-09-27 18:30:09

如果这个问题听起来很愚蠢,我真的很抱歉,我是WCF的新手,我想知道我是否可以将Textbox值从页面传递到WCF方法。

这是service.svn.cs文件中服务调用的方法:

public List<Product> GetProducts(string name)
{
  ProductDataClassDataContext db = new ProductDataClassDataContext();
  var products = db.usp_Get_Products();
  return products.ToList();
}

这是调用服务的代码文件About.xaml.cs

private void OnSearchProductClick(object sender, RoutedEventArgs e)
{
  ServiceReference1.Service1Client webService = new ServiceReference1.Service1Client();
  webService.GetProductsCompleted += new EventHandler<GetProductsCompletedEventArgs>(webService_GetProductsCompleted);
  webService.GetProductsAsync();
  txtblcName.Text = txtName.Text;   //Send this as parameter to usp_Get_Products
}
public void webService_GetProductsCompleted(object sender, ServiceReference1.GetProductsCompletedEventArgs e)
{
  ProductGrid.ItemsSource = e.Result; //Binding Datagrid 
}

我想将txtName值传递给GetProducts(),但似乎无法做到这一点,因为它会被自动调用。有办法吗??

已编辑

这是服务合同

[ServiceContract]
public interface IService1
{
  [OperationContract]
  List<Product> GetProducts(string name);
}

将参数传递给WCF服务调用的方法

如果WCF ServiceContract仅包含此OperationContract:

[OperationContract]
List<Product> GetProducts(string name);

然后您的服务调用无法编译,因为缺少字符串参数。要传递TextBox值,您应该使用以下参数调用它:

webService.GetProductsAsync(txtName.Text);

确保在任何合同变更后"更新服务参考"。