首页 文章

如何在kendo下拉列表中绑定字符串列表

提问于
浏览
1

您好我正在使用Kendo for ASP.NET MVC .

我有包含数据的字符串列表

[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);
            }
        }

有谁知道我怎么能这样做!

任何帮助将是欣赏 .

4 回答

  • 0

    你提供的答案实际上是正确的 . 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循环 .

  • 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

    你的 getData() 有什么回报?您需要返回一个可枚举的对象,该对象具有一个名为 stringname 的属性,或者您在DataText / DataValue文件中指定的属性名称 . 像这样: return Json(youStringArray.Select(x=>new{stringname = x}))

  • 0

    尝试ValuePrimitive:

    Html.Kendo().DropDownList()
                            .Name("ddlstrings")
                            .ValuePrimitive(true)
                            .SelectedIndex(0)
                            .DataSource(source =>
                                {
                                    source.Read(read =>
                                    {
                                        read.Action("getData", "String");
                                    });
                                })
    

相关问题