如何在没有ajax调用的情况下将kendo下拉列表绑定到asp.net web api?

时间:2014-01-16 06:40:02

标签: jquery ajax asp.net-mvc asp.net-web-api

我有一个剑道下拉列表。我正在对我的web api进行ajax调用来绑定它。 下拉列表:

@(Html.Kendo().DropDownList()
            .Name("ddlDepartment")
            .DataValueField("DeptId")
            .DataTextField("DeptName")
            .SelectedIndex(0)
            .AutoBind(false)
            )

Ajax Call to Web Api:

 $(document).ready(function () {
            var ddl = $('#ddlDepartment').data("kendoDropDownList");
            jQuery.support.cors = true;
            $.ajax({
                url: 'http://localhost:8648/api/dropdown/',
                type: 'GET',
                dataType: 'json',
                success: function (data) {
                    debugger;
                    alert(data);
                    ddl.setDataSource(data);
                },
                error: function (x, y, z) {
                    alert(x + '\n' + y + '\n' + z);
                }
            });
        })

但我想直接将它与Api绑定,就像我们在默认的mvc控制器中使用普通操作方法绑定它一样。 我的Api方法:

// GET api/dropdown
        public IEnumerable<Department> Get()
        {
            List<Department> depart = _departmentTask.GetAll();
            return depart;
        } 

2 个答案:

答案 0 :(得分:2)

查看:

@(Html.Kendo().DropDownList()
          .Name("products")
          .HtmlAttributes(new { style = "width: 250px" })
          .DataTextField("DeptName")
          .DataValueField("DeptId")
          .DataSource(source => {
              source.Read(read =>
              {
                  read.Url("http://localhost:8648/api/dropdown/").Type(HttpVerbs.Get);
              }); 
          })

API:

// GET api/dropdown
        public IEnumerable<Department> Get()
        {
            List<Department> depart = _departmentTask.GetAll();
            return depart;
        }

答案 1 :(得分:0)

假设您的控制器被调用dropdown并且您的操作被称为Get,您可以bind the dropdown to a remote data source

@(Html.Kendo().DropDownList()
 .Name("ddlDepartment")
 .DataValueField("DeptId")
 .DataTextField("DeptName")
 .SelectedIndex(0)
 .DataSource(source =>
  {
       source.Read(read =>
       {
           read.Action("Get", "dropdown");

       });
)

请注意,您可能需要更改控制器才能返回JsonResult

有一个幕后的Ajax调用,但是Kendo会为你处理这个问题。您还可以bind events to the Ajax call as depicted in the online demos