我正在为我的MVC应用程序使用kendo multiselect控件,我试图绑定多选,但它不起作用。 以下是我的HTML代码:
@(Html.Kendo().MultiSelect()
.Name("ajaxTags")
.Placeholder("Select cities...")
.AutoBind(false)
.DataTextField("CityName")
.DataValueField("CityCode")
.Filter(FilterType.StartsWith)
.BindTo(new SelectList("CityCode","CityName"))
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetCities", "DutyTravel");
});
source.ServerFiltering(true);
})
.HtmlAttributes(new { style = "width: 60%;" })
)
所以,这里我使用的是AutoBind(false)
,所以只有当用户展开时,才会调用服务器并获取数据。
以下是我的控制器代码:
public JsonResult GetCities([DataSourceRequest] DataSourceRequest request)
{
List<DutyTravelPerDiemMaster> lstCities = null;
lstCities = (List<DutyTravelPerDiemMaster>)HttpContext.Session["GetPerdiemList"];
var lstFilteredCity = from d in lstCities
select new
{
CityCode = d.CityCode,
CityName = d.CityName
};
return Json(lstFilteredCity.ToList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
在这种方法中,我看到所有城市代码和城市名称都已填充,但未在多选中显示。
答案 0 :(得分:0)
您正尝试将Server
和Ajax
绑定在一起。假设您要进行Ajax绑定,请删除以下行:
.BindTo(new SelectList("CityCode","CityName"))
答案 1 :(得分:0)
根据Teleriks Kendo UI演示,不需要设置bindTo属性。看一下这段代码,它是从他们的演示部分复制并粘贴的:
@(Html.Kendo().MultiSelect()
.Name("products")
.DataTextField("ProductName")
.DataValueField("ProductID")
.Placeholder("Select products...")
.AutoBind(false)
.DataSource(source => {
source.Read(read =>
{
read.Action("GetProducts", "Home");
})
.ServerFiltering(true);
})
)
如需了解更多信息,请访问:http://demos.telerik.com/aspnet-mvc/multiselect/serverfiltering