将参数传递给 WCF 服务调用的方法
Pass arguments to a method called by WCF Service
如果这个问题听起来很愚蠢,我真的很抱歉,我是 WCF 的新手,我想知道我是否可以将文本框值从页面传递到 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 ServiceContract 仅包含此 OperationContract:
[OperationContract]
List<Product> GetProducts(string name);
那么您的服务调用无法编译,因为缺少字符串参数。
要传递 TextBox 值,您应该使用此参数调用它:
webService.GetProductsAsync(txtName.Text);
确保在任何合同变更后"Update Service Reference"。
如果这个问题听起来很愚蠢,我真的很抱歉,我是 WCF 的新手,我想知道我是否可以将文本框值从页面传递到 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 ServiceContract 仅包含此 OperationContract:
[OperationContract]
List<Product> GetProducts(string name);
那么您的服务调用无法编译,因为缺少字符串参数。 要传递 TextBox 值,您应该使用此参数调用它:
webService.GetProductsAsync(txtName.Text);
确保在任何合同变更后"Update Service Reference"。