C# ajax控制工具包cascadingdropdown web服务错误c
我试图将ajax控制工具包cascadingdropdown用于web服务,但在使用web服务时,在初始下拉框中不断出现方法错误0。如果我在最初的下拉列表中尝试不使用web服务,那么在第二个级联下拉列表中也会出现相同的错误 以下是我的web服务代码和下拉列表:C# ajax控制工具包cascadingdropdown web服务错误c,c#,ajaxcontroltoolkit,cascadingdropdown,C#,Ajaxcontroltoolkit,Cascadingdropdown,我试图将ajax控制工具包cascadingdropdown用于web服务,但在使用web服务时,在初始下拉框中不断出现方法错误0。如果我在最初的下拉列表中尝试不使用web服务,那么在第二个级联下拉列表中也会出现相同的错误 以下是我的web服务代码和下拉列表: <asp:DropDownList ID="ServerDropDown" runat="server"></asp:DropDownList> <ajaxToolkit:Cascadin
<asp:DropDownList ID="ServerDropDown" runat="server"></asp:DropDownList>
<ajaxToolkit:CascadingDropDown
ID="CascadingDropDown2"
runat="server"
TargetControlID="ServerDropDown"
Category="ServerID"
PromptText="-- Select one --"
ServiceMethod="GetServerValues"
ServicePath="../App_Data/Search.asmx.cs"
/>
<asp:DropDownList ID="DatabaseDropDown" runat="server"></asp:DropDownList>
<ajaxToolkit:CascadingDropDown
ID="CascadingDropDown1"
runat="server"
TargetControlID="DatabaseDropDown"
ParentControlID="ServerDropDown"
Category="DatabaseID"
PromptText="-- Select one --"
ServiceMethod="GetDatabasesForServer"
ServicePath="../App_Data/Search.asmx.cs"
/>
服务代码:
using System;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using AjaxControlToolkit;
using System.Collections.Generic;
///<summary>
/// Summary description for ServiceCS
///</summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Search : System.Web.Services.WebService
{
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public CascadingDropDownNameValue[] GetDatabasesForServer(string knownCategoryValues, string category)
{
//StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
//int ServerID;
//if (!kv.ContainsKey("Server") || !Int32.TryParse(kv["Server"], out ServerID))
//{
// return null;
//}
string ServerID = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)["ServerID"];
string sSQL = @"SELECT DL.DatabaseID AS value, SL.ServerName + ' - ' + DL.DatabaseName AS DisplayText " +
"FROM BabelFish.dbo.DatabaseList DL (NOLOCK) " +
"INNER JOIN BabelFish.dbo.ServerList SL (NOLOCK) ON DL.ServerId = SL.ServerId " +
"WHERE DL.IsActive = 1 " +
"AND SL.ServerID = '" + ServerID + "' " +
"Order by DisplayText";
DataTable dt = DatabaseAccessing.DatabaseConnection.GetDataTable(sSQL);
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
values.Add(new CascadingDropDownNameValue((string)dr["DisplayText"], dr["DatabaseID"].ToString()));
}
//List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
//foreach (DataRow dr in ds)
//{
// values.Add(new CascadingDropDownNameValue((string)dr["Color"], dr["ColorID"].ToString()));
//}
return values.ToArray();
}
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public CascadingDropDownNameValue[] GetServerValues(string knownCategoryValues, string category)
{
string sSQL = @"SELECT ServerId as Value, ServerName as DisplayText " +
"FROM BabelFish.dbo.ServerList (NOLOCK) " +
"Order By DisplayText";
DataTable dt = DatabaseAccessing.DatabaseConnection.GetDataTable(sSQL);
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
// tried manually adding if it was issue with data set but did not work eihter
//values.Add(new CascadingDropDownNameValue("testdispally1", "1"));
//values.Add(new CascadingDropDownNameValue("testdispally2", "2"));
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
values.Add(new CascadingDropDownNameValue((string)dr["DisplayText"], dr["DatabaseID"].ToString()));
}
return values.ToArray();
}
}// end class
一位朋友为我找到了解决办法。代码很好,但是AjaxControlToolkit.dll没有正确注册,或者没有针对此特定功能注册。它在工具箱中工作/注册了其他功能。他使用NUGET下载ajax工具包,并将其作为一个独立的软件包安装,并指向该软件包,而不是像我所做的那样直接指向.dll,它运行良好 只需测试/确认此配置在发布到服务器时有效。发布到服务器时,基于.dll的注册路径,.dll无法在服务器上工作,我遇到了问题