2011-02-04 20 views
1

CascadingDropDownリストを動作させるのに問題があり、リスト内にMethod 500エラーが表示されています。私はこれに共通するすべての解決策を試したが、まだ運がない。CascadingDropDownパラメータがありません:knownCategoryValues

私はもともと次のようなエラーになった

System.ArgumentException: Invalid method name 'getcategories', method names are case sensitive. The method name 'GetCategories' with the same name but different casing was found. Parameter name: methodName

私は間違いなく正しい場合には、メソッド名を設定していますが、それは(小文字でそれを送っていたので、クロムは、送信側としてページを示していても奇数であります正しい場合)。とにかく、私は小文字にメソッド名自体を変更することでこれを回避しました。誰もが大きな助けになり、これらの問題のいずれか上の任意の光を当てることができ

System.InvalidOperationException: Missing parameter: knownCategoryValues.

場合、私はこの問題にあまりにも長く過ごした:これは今、新しいエラーが表示されます。

ありがとうございました。

更新されたコード:

<ajaxToolkit:ToolkitScriptManager EnablePageMethods="true" ID="ToolkitScriptManager1" runat="server"> 
</ajaxToolkit:ToolkitScriptManager> 
<ajaxToolkit:CascadingDropDown 
    ID="CascadingDropDown1" 
    runat="server" 
    TargetControlID="mmCategory" 
    Category="Category" 
    PromptText="Select a category" 
    ServicePath="~/DropDownLists.asmx" 
    ServiceMethod="GetCategories" /> 
<ajaxToolkit:CascadingDropDown 
    ID="CascadingDropDown2" 
    runat="server" 
    TargetControlID="mmTemplate" 
    ParentControlID="mmCategory" 
    PromptText="Select a template" 
    ServiceMethod="GetTemplates" 
    ServicePath="~/DropDownLists.asmx" 
    Category="Template" /> 
Category: <asp:DropDownList ID="mmCategory" runat="server"/><br/> 
Template: <asp:DropDownList ID="mmTemplate" runat="server"/><br/> 

Webサービスファイル:

CascadingDropDownで使用可能にするために
using System; 
using System.Web; 
using System.Collections; 
using System.Collections.Generic; 
using System.Collections.Specialized; 
using System.Web.Services; 
using System.Web.Services.Protocols; 
using AjaxControlToolkit; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Linq; 

/// <summary> 
/// Summary description for TemplateData 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService()] 

public class DropDownLists : System.Web.Services.WebService 
{ 

    public DropDownLists() 
    { 
     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 
    public CascadingDropDownNameValue[] getcategories(string knownCategoryValues, string category) 
    { 

     List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
     values.Add(new CascadingDropDownNameValue("test 1", "1")); 
     values.Add(new CascadingDropDownNameValue("test 2", "2")); 
     return values.ToArray(); 

     /*using (MiscDataContext dc = new MiscDataContext()) 
     { 
      var CatQuery = from D in dc.Templates 
         select new { D.Category } 
          into CatQueryResults 
           select CatQueryResults; 

       foreach (var CatResult in CatQuery) 
       { 
        string CatReturn = CatResult.Category; 
        values.Add(new CascadingDropDownNameValue(CatReturn, CatReturn)); 
       } 
       return values.ToArray(); 
     }*/ 

    } 


    [System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 
    public CascadingDropDownNameValue[] GetTemplates(string knownCategoryValues, string category) 
    { 

     StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); 
     string varCat; 
     varCat = kv["Category"]; 


     List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
     values.Add(new CascadingDropDownNameValue("test 3", "3")); 
     values.Add(new CascadingDropDownNameValue("test 4", "4")); 
     return values.ToArray(); 
     /*using (MiscDataContext dc = new MiscDataContext()) 
     { 
      var CatQuery = from D in dc.Templates 
         where(D.Category == varCat) 
         select new { D.ID, D.Name } 
         into CatResult 
         select CatResult; 

       foreach (var CatResult in CatQuery) 
        { 
         int ID = (int)CatResult.ID; 
         string Name = CatResult.Name; 
         values.Add(new CascadingDropDownNameValue(Name, Convert.ToString(ID))); 
        } 
        return values.ToArray(); 
      }*/ 
     } 
} 
+0

いくつかのコードをいただければ幸いです。 – V4Vendetta

+0

申し訳ありませんが、コードを追加しました。 – baked

答えて

0

は、ウェブメソッドのプロトタイプでなければなりません:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public CascadingDropDownNameValue[] GetCategories(
    string knownCategoryValues, string category) 
{ 
} 

あなたの場合エクステンダのContextKeyプロパティに何かを割り当てると、そのプロトタイプはs:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public CascadingDropDownNameValue[] GetCategories(
    string knownCategoryValues, string category, string contextKey) 
{ 
} 

knownCategoryValuesパラメータは、マスタードロップダウンの現在の選択を表します。実際の値を取得するには、CascadingDropDown.ParseKnownCategoryValuesString()に渡す必要があります。

+0

オリジナルの投稿に自分のコードを追加しました。ここに示したのとまったく同じものを使用しています。 – baked

+0

@baked、例外バックトレースを提供できますか? –

+0

申し訳ありませんが、私はそれが何であるか分かりません。私は.NET環境に比較的新しいです。 – baked

関連する問題