1

我正在使用为 Kendo UI 启用的 Visual Studio 2012 Internet 应用程序。这是一个 MVC4 C# 和 Razor View 项目。

我有超过 6 个模型,我最终将与这些下拉列表级联

我一直在逐步遵循教程(实际上是复制它并在代码中重命名)。

当页面加载 UI 看起来很棒,但没有数据绑定到 DropdownLists(/comboboxes)

我真的只专注于第一个 DropDownList atm 至极

<p>
    <label for="clients">Clients:</label>
    @(Html.Kendo().DropDownList()
          .Name("clients")
          .HtmlAttributes(new { style = "width:300px" })
          .OptionLabel("Select Client...")
          .DataTextField("Client")
          .DataValueField("ClientID")
          .DataSource(source => {
               source.Read(read => {
                   read.Action("GetCascadeClients", "ComboBox");
               });
          })
    )
</p>

当代码到达

.DataSource(source => {
               source.Read(read => {
                   read.Action("GetCascadeClients", "ComboBox");
               });
          })

它应该调用此操作,但 此操作不位于此视图的控制器中

public JsonResult GetCascadeClients()
        {
            var Clients = db.Clients.AsQueryable();

            return Json(db.Clients.Select(c => new { ClientID = c.ClientID, Client = c.Client }), JsonRequestBehavior.AllowGet);

        }

我的问题是我做错了什么,它几乎必须是愚蠢的......(是的数据在数据库中,是的在其他控件中它们绑定得很好。)

编辑:认为下面的 2 个下拉框显示文本而顶部的不显示有点奇怪?

在此处输入图像描述

此处未命中断点:

在此处输入图像描述

我也有这个运行的脚本标签,可能有问题请记住,我只希望填写第一个(如果第一个有效,其余的应该属于)

<script>
$(document).ready(function () {
    var clients = $("#clients").data("kendoDropDownList"),
        countys = $("#countys").data("kendoDropDownList"),
        townShips = $("#townShips").data("kendoDropDownList");

    $("#get").click(function () {
        var clientsInfo = "\nclients: { id: " + clients.value() + ", name: " +  clients.text() + " }",
            countysInfo = "\ncountys: { id: " + countys.value() + ", name: " + countys.text() + " }",
            townShipsInfo = "\ntownShips: { id: " + townShips.value() + ", name: " + townShips.text() + " }";

        alert("Select Tract To Upload:\n" + clientsInfo + countysInfo + townShipsInfo);
    });
});
</script>
4

2 回答 2

1

@Don Thomas Boyle,我能够复制您的代码并使用我的控制器返回 json 数据,并获得选项标签以显示“选择客户端 ...”。浏览器地址栏中手动调用返回的json字符串是否可以获取?您的控制器的名称是什么?“组合框”对我来说听起来像是一个可疑的控制器名称。

      <p>
<label for="clients">Clients:</label>
@(Html.Kendo().DropDownList()
      .Name("clients")
      .HtmlAttributes(new { style = "width:300px" })
      .OptionLabel("Select Client...")
      .DataTextField("SiteName")
      .DataValueField("ID")
      .DataSource(source => {
           source.Read(read => {
               read.Action("GetSites", "PlayGround");
           });
      })
)

这是我的控制器:

namespace MyWebApp.Controllers
{

public class PlayGroundController : Controller
{
    readonly MyEntities context = new MyEntities();

    public JsonResult GetSites()
    {

        var sites = context.vSites.Select(s => new SitesVM
        {
            ID = s.ID,
            SiteName = s.SiteName

        }).OrderBy(s => s.SiteName);
        return Json(sites, JsonRequestBehavior.AllowGet);
    }



} 
于 2013-08-19T18:27:56.703 回答
1

这一行:

.DataTextField("Client")

应该:

 .DataTextField("ClientName")
于 2013-08-19T16:27:50.457 回答