gpt4 book ai didi

c# - 使用 Ajax AutoCompleteExtender 请求 Web 服务时出现 500 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:28 25 4
gpt4 key购买 nike

场景:

我正在开发一个 webform(MVC) 项目,在该项目中我必须使用 Ajax AutoCompleteExtender 控件中的 Web 服务来进行搜索。首先,我检查了工作正常的 HelloWorld() 服务,但是当我创建名为 GetParentID 的自定义 Web 服务并对其发出请求时。它向我显示了 500 条错误消息,它在下面的快照中定义:

enter image description here

下面是我的 Default.aspx.cs 代码:

 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender
ID="AutoCompleteExtender1"
runat="server"
ServiceMethod="GetParentID"
ServicePath="~/Services.asmx"
TargetControlID="TextBox1"
MinimumPrefixLength="1"
UseContextKey="false"
CompletionInterval="0"
EnableCaching="true"
CompletionSetCount="30"
FirstRowSelected="true">


</ajaxToolkit:AutoCompleteExtender>

下面是我的 Service.asmx.cs 代码:

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public string[] GetParentID(string prefixText, int count)
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);

DataRow dr = dt.NewRow();

dr[0] = "Adil";
dr[0] = "Ahmer";
dr[0] = "Kamran";
dr[0] = "Fasih";
dr[0] = "Azeem";
dr[0] = "Rana";
dr[0] = "Humza";
dr[0] = "Waleed";
dr[0] = "Faizan Rafiq";
dr[0] = "Mohsin";
dr[0] = "Ahsan";
dr[0] = "Arshad Ahmed";
dr[0] = "Uncle Majboor";

dt.Rows.Add(dr);

//DataTable dt = null;
DataView dv = null;
List<string> suggestions = new List<string>();
//dt = (DataTable)HttpContext.Current.Session["ParentID"];

if ((dt != null))
{
dv = dt.Copy().DefaultView;
dv.RowFilter = "Name like '%" + prefixText + "%' ";
dv.Sort = "ID Asc";

string c = prefixText;
double Num = 0;
bool isNum = double.TryParse(c, out Num);
int indx = 0;

foreach (DataRowView dvr in dv)
{
if (indx <= count)
{
suggestions.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(dvr["Name"].ToString(), dvr["Name"].ToString()));
indx += 1;
}

}
}
return suggestions.ToArray();
}

我不知道如何处理 asmx 网络服务。这是我的第一次尝试。大多数情况下,我使用 javascript/jquery ajax 调用发出请求。以下是我在此应用程序中使用的先决条件。我还附上了完整的 github 存储库链接,这样你们就可以轻松地帮助我解决这个问题。

github

在 VS 2013 上创建的解决方案

点网框架 4.5

AjaxControlToolKit

AjaxControlToolkit.Installer.17.1.1.0

最佳答案

那是因为您正在使用 AJAX 调用该 Web 方法。只有在类定义上具有 [ScriptService] 属性的 Web 服务才能从脚本中调用。

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]

所以只需取消注释该行,它就会开始工作。

[System.Web.Script.Services.ScriptService]

关于c# - 使用 Ajax AutoCompleteExtender 请求 Web 服务时出现 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46838528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com