级联DropDownListView没有调用read.action?

时间:2013-08-19 16:06:32

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc

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

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

我一直在跟踪The Tutorial(实际上已将其复制并在代码中重命名)。

当页面加载时,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个下拉框显示文字并且顶部不显示文件有点奇怪?

enter image description here

  

断点点击此处:

enter image description here

  

此外我还有这个运行的脚本标签,可能会出现问题请记住我只想填充第一个(如果第一个工作,其余的应该落入)

<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>

2 个答案:

答案 0 :(得分:1)

这一行:

.DataTextField("Client")

应该是:

 .DataTextField("ClientName")

答案 1 :(得分:1)

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

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



}