我想從Ajax Control Toolkit中使用非常基本的CascadingDropDown。我試圖實現的是讓用戶從下拉列表中選擇「州」和「城市」。 CascadingDropDown代碼如下所示。asp.net Ajax Toolkit CascadingDropdown - 未知的web方法
State : <asp:DropDownList ID="DdlState" runat="server" />
<asp:CascadingDropDown ID="CddState" runat="server" TargetControlID="DdlState" Category="State"
EmptyText="Select State" EmptyValue="0" ServiceMethod="GetDropDownContents"
/>
City : <asp:DropDownList ID="DdlCity" runat="server" />
<asp:CascadingDropDown ID="CddCity" runat="server" TargetControlID="DdlCity" ParentControlID="DdlState" Category="City"
EmptyText="Select City" EmptyValue="0" ServiceMethod="GetDropDownContents"
/>
和這裏是我在後臺代碼
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category) {
if (category.Equals("State")) {
StateManager stateManager = new StateManager(null);
List<CascadingDropDownNameValue> states = new List<CascadingDropDownNameValue>();
foreach (State state in stateManager.GetQueryableStates().ToList()) {
states.Add(new CascadingDropDownNameValue(state.Name, state.Id.ToString()));
}
return states.ToArray();
} else {
CityManager cityManager = new CityManager(null);
List<CascadingDropDownNameValue> cities = new List<CascadingDropDownNameValue>();
foreach (City city in cityManager.GetQueryableCities()
.Where(c => c.State.Id == 1))) {
cities.Add(new CascadingDropDownNameValue(city.Name,city.Id.ToString()));
}
return cities.ToArray();
}
}
上面的代碼與500內部服務器錯誤而失敗。使用小提琴手我可以看到以下錯誤「未知的網絡方法GetDropDownContents」。但是我的代碼隱藏文件中已經有了Web方法GetDropDownContents(),並且也被標記爲[WebMethod]。
那麼,爲什麼填充下拉請求找不到我在代碼隱藏文件中的Web方法。
更新 這裏是鏈接到演示CascadingDropDown
更新-2 類聲明。
public partial class Index : System.Web.UI.Page
{
....
}
你使用的是web服務嗎? – Mate
不,我在我的代碼隱藏文件中有方法 – Jatin
好的,在該示例中使用webservice,並且您使用的是從System.Web.UI.Page繼承的類嗎?你能告訴我們包含方法的類的聲明GetDropDownContents – Mate