如何在剑道下拉列表中绑定字符串列表
Posted
技术标签:
【中文标题】如何在剑道下拉列表中绑定字符串列表【英文标题】:How to bind list of string in kendo dropdownlist 【发布时间】:2016-11-14 13:42:10 【问题描述】:您好,我正在为 ASP.NET MVC 使用 Kendo。
我有包含数据的字符串列表
[0]="str1"
[1]="str2"... and so on
现在我想将这个字符串列表绑定到 kendo 下拉列表中。
我已经通过具有名称和 ID 的类列表绑定下拉列表,但字符串列表中只有一个数据,我不知道如何绑定它!
我已经这样做了:
@(
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);
有谁知道我该怎么做!
任何帮助将不胜感激。
【问题讨论】:
getData
Action 的返回类型是什么?
通过 字符串列表 你的意思是一个 javascript 数组或一个 c# 列表?
返回类型为 json,返回数据来自 c# 的字符串列表,我更新了问题,请查看,以便您更好地理解。
【参考方案1】:
不知道好不好,但通过一些手动工作得到了解决方案:
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");
);
)
)
【讨论】:
【参考方案2】:您提供的答案实际上是正确的。 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 循环。
【讨论】:
哦,是的,不需要使用 for 循环。谢谢它减少了我的代码。【参考方案3】:试试 ValuePrimitive:
Html.Kendo().DropDownList()
.Name("ddlstrings")
.ValuePrimitive(true)
.SelectedIndex(0)
.DataSource(source =>
source.Read(read =>
read.Action("getData", "String");
);
)
【讨论】:
【参考方案4】:您的getData()
返回什么?您需要返回一个可枚举的对象,该对象具有名为stringname
的属性或您在 DataText/DataValue 文件中指定的任何属性名称。
像这样的东西:
return Json(youStringArray.Select(x=>newstringname = x))
【讨论】:
不,它仍然设置未定义的值。我已经更新了问题,请查看。【参考方案5】: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();
【讨论】:
以上是关于如何在剑道下拉列表中绑定字符串列表的主要内容,如果未能解决你的问题,请参考以下文章