4

ajaxを使用してKendo UI for ASP.NET MVCでドロップダウンリストをカスケードする例を誰か提供できますか? ヘルパー メソッド ( @Html.Kendo().DropDownList()) について話しているのですが、子のドロップダウン リストを呼び出さなければならないことは理解してCascadeFrom("ParentDropDownListName")いますが、コントローラーのアクションはどのようなものですか? それらを接続しようとすると、子ドロップダウン リスト アクション メソッドに渡されるパラメーターに対して null 例外が発生します。舞台裏で、剣道は選択された親の DataValueField を抽出し、それを子のドロップダウンリストへのコントローラーアクションリクエストに追加していると想定していましたが、それが起こっているようには見えません。

更新:これは、コントローラー アクションに送信される「フィルター」コレクションに関係していると思います。コントローラー アクションで着信フィルター コレクション/オブジェクトを処理する方法がわかりません。

4

1 に答える 1

6

kendo UI サイトのカスケード ドロップダウンリストの例と cshtml コード ソースを読んだことがあると思います。

2 番目のドロップダウンリストは製品に対応し、次の方法でカテゴリからカスケードしています。

    @(Html.Kendo().DropDownList()
      .Name("products")
      .OptionLabel("Select product...")
      .DataTextField("ProductName")
      .DataValueField("ProductID")
      .DataSource(source => {
          source.Read(read =>
          {
              read.Action("GetCascadeProducts", "ComboBox")
                  .Data("filterProducts")
                  .Type(HttpVerbs.Post); // This line serves to accept POST requests
          })
          .ServerFiltering(true);
      })
      .Enable(false)
      .AutoBind(false)
      .CascadeFrom("categories")

(Postリクエストを受け入れるには、行を追加する必要があることに注意してください)

この例では、次の構文のコントローラーが必要になります。

    [HttpPost]
    public JsonResult GetCascadeProducts(int category)
    {
        List<Product> Products = new List<Product>();

        Products.Add(new Product(1, 0, "Chai"));
        Products.Add(new Product(1, 1, "Chang"));
        Products.Add(new Product(1, 2, "Guarana Fantastica"));
        Products.Add(new Product(2, 0, "Aniseed Syrup"));
        Products.Add(new Product(2, 1, "Seasoning"));

        var ProductsInCategory = from p in Products where p.CategoryID == category select p;

        return Json(ProductsInCategory);
    }

私のクラスのテンプレートは次のとおりです。

    public class Product
    {
        public int CategoryID { get; set; }
        public int ProductID { get; set; }
        public string ProductName { get; set; }

        public Product(int category, int id, string name)
        {
            CategoryID = category;
            ProductID = id;
            ProductName = name;
        }
    }

正しい Javascript 関数がある場合:

function filterProducts() {
    return {
        category: $("#categories").val()
    };
}

(カテゴリはコントローラーメソッドのパラメーター名と同じである必要があります) 通常、すべて正常に動作するはずです!

于 2012-09-19T15:27:09.923 に答える