获得500错误,而使用Ajax AutoCompleteExtender请求的web服务
问题描述:
场景:获得500错误,而使用Ajax AutoCompleteExtender请求的web服务
我的工作中,我不得不使用Web服务在阿贾克斯AutoCompleteExtender控件用于搜索目的的网页表单(MVC)项目。首先我检查了HelloWorld()
这个服务工作正常,但是当我创建我的自定义网络服务名为GetParentID
并对其提出请求时。这表明我捕捉这在下文中定义500错误消息:
下面是我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网络SERVIC ES。这是我第一次尝试。大多数情况下,我使用javascript/jquery ajax调用请求。以下是我在此应用程序中使用的先决条件。此外,我附上了完整的github存储库链接,以便您在这件事上轻松帮助我。在VS创建
解决方案2013
点净框架4.5
AjaxControlToolKit
AjaxControlToolkit.Installer.17.1.1.0
答
那是因为你拨打的网络方法使用AJAX。只能通过脚本调用类定义中具有[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]
IDK我是如何错过这个小小的评论代码,但你值得感谢和upvoted。 –