我正在使用我为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个下拉框显示文字并且顶部不显示文件有点奇怪?
断点不点击此处:
此外我还有这个运行的脚本标签,可能会出现问题请记住我只想填充第一个(如果第一个工作,其余的应该落入)
<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>
答案 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);
}
}