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