我有一个剑道下拉列表。我正在对我的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;
}
答案 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。