您好我正在使用Kendo for ASP.NET MVC。
我有包含数据的字符串列表
[0]="str1"
[1]="str2"... and so on
现在我想将这个字符串列表绑定到kendo下拉列表。
我按类名列表绑定下拉列表,但是只有一个数据在字符串列表中,我不知道如何绑定它!
我在下面这样做了:
@(
Html.Kendo().DropDownList()
.Name("ddlstrings")
.DataTextField("stringname")
.DataValueField("stringname")
//.Events(x => x.Select("sourceclick"))
.SelectedIndex(0)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getData", "String");
});
})
)
但我没有定义。
我正在返回这样的数据:
public JsonResult getData()
{
try
{
List<string> stringlist = object.getstrlist();
return Json(stringlist, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json("", JsonRequestBehavior.AllowGet);
}
}
有谁知道我该怎么做!
任何帮助都会受到赞赏。
答案 0 :(得分:3)
不知道它是否好或者通过一些手工工作获得了解决方案:
var selectList = new List<SelectListItem>();
foreach (var element in stringlist)
{
selectList.Add(new SelectListItem
{
Value = element.ToString(),
Text = element.ToString()
});
}
return Json(selectList, JsonRequestBehavior.AllowGet);
并在观点方面:
@(
Html.Kendo().DropDownList()
.Name("ddlstrings")
.DataTextField("Text")
.DataValueField("Value")
//.Events(x => x.Select("sourceclick"))
.SelectedIndex(0)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getData", "String");
});
})
)
答案 1 :(得分:1)
你提供的答案实际上是正确的。 Action必须返回List<SelectListItem>
作为输出。 See this Example并在代码中查看BindTo
属性。
您只需将代码更新为以下内容即可。
public JsonResult getData()
{
try
{
var stringlist = object.getstrlist().select( x=> new SelectListItem
{
Value = x,
Text = x
}).ToList();
return Json(stringlist, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json("", JsonRequestBehavior.AllowGet);
}
}
我刚修改了你的代码,没有for循环。
答案 2 :(得分:1)
尝试ValuePrimitive:
Html.Kendo().DropDownList()
.Name("ddlstrings")
.ValuePrimitive(true)
.SelectedIndex(0)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getData", "String");
});
})
答案 3 :(得分:0)
您getData()
的回报是什么?您需要返回一个可枚举的对象,该对象具有一个名为stringname
的属性,或者您在DataText / DataValue文件中指定的属性名称。
像这样的东西:
return Json(youStringArray.Select(x=>new{stringname = x}))
答案 4 :(得分:0)
using TestSolution.Utility;
...
public JsonResult getData()
{
try
{
var stringlist = object.getstrlist();
return Json(stringlist.ToIdNameList(), JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json("", JsonRequestBehavior.AllowGet);
}
}
=============================
using TestSolution.Models;
using System.Collections.Generic;
using System.Linq;
namespace TestSolution.Utility
{
/// <summary>
/// Kendo Drop Down List Extention
/// </summary>
public static class KendoDropDownListExtention
{
public static List<IdName> ToIdNameList(this string[] stringList)
{
return stringList.Select(sl => new IdName() { Name = sl, Value = sl }).ToList();
}
}
}