Ajax自动完成Web服务调用-服务方法,我可以正确地调用它吗?

时间:2020-03-05 18:47:53  来源:igfitidea点击:

好的,所以我在Web服务中的方法需要传递一个类型,该类型在AutoCompleteExtender的ServiceMethod属性中被调用,对于如何执行该操作我很困惑,因此我这样调用它:

ServiceMethod="DropDownLoad<<%=(typeof)subCategory%>>"

其中subCategory是如下页面属性:

protected SubCategory subCategory
{
    get
    {
        var subCategory = NHibernateObjectHelper.LoadDataObject<SubCategory>(Convert.ToInt32(Request.QueryString["SCID"]));
        return subCategory;
    }
}

解决方案

回答

我不认为可以在Web服务上调用泛型方法。

如果查看两种相同方法的服务描述,一种是通用方法,另一种则不是:

[WebMethod]
public string[] GetSearchList(string prefixText, int count)
{
}

[WebMethod]
public string[] GetSearchList2<T>(string prefixText, int count)
{
}

它们是相同的。看来SOAP 1.x和HTTP POST都不允许这种类型的操作。

回答

我们可以使用AutoCompleteExtender的ContextKey参数来使用单个Web方法,该方法接受类型名称作为其上下文键。然后在web方法中,使用反射和该参数返回所需的string []。