2016-01-12 113 views
1

如果我听起来这个问题很愚蠢,我真的很抱歉,我是WCF的新手,我想知道是否可以将页面的Textbox值传递给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); 
} 
+0

你可以发布你的服务合约界面吗? – Ahhhhbisto

+0

@Ahhhhbisto文章编辑 –

回答

0

如果您的WCF的ServiceContract只包含这个OperationContract的:

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

那么你的服务调用不能编译,因为字符串论点缺失。 要通过一个文本框的值,你应该有这样的说法称之为:

webService.GetProductsAsync(txtName.Text); 

确保“更新服务引用”任何合同变更后。

+0

我试过这个,但'公开列表 GetProducts(字符串名称)'获取'null'而不是传递'txtName.text'值。为什么这样? –

+0

更新服务参考后工作。谢谢你提及:) –

相关问题