我正在尝试绑定来自json的数据。 在控制器中,我正在发送
......
public JsonResult LoadTree()
........
return Json(jn, JsonRequestBehavior.AllowGet);
在调试中,我获取 jn 中的值(47 个项目,每个项目有两个输入(文本和值(。
在视图中,我使用以下脚本:
function onDataBinding(e) {
var url = 'CourseCases/LoadTree';
var result;
$.ajax({
url: url,
data: {},
contentType: "application/json",
success: function (data) {
alert(data);
var treeview = $("#TreeView").data("tTreeView");
treeview.bindTo(data);
}
});
}
它不起作用,警报显示对象,对象;并且树视图为空白!知道为什么吗? 提前谢谢。
您要发送的属性应该称为Value
和Text
,而不是value
和text
。这是一个对我来说很好用的例子。
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult LoadTree()
{
var jn = new[]
{
new { Value = "1", Text = "Item 1" },
new { Value = "2", Text = "Item 2" },
new { Value = "3", Text = "Item 3" },
};
return Json(jn, JsonRequestBehavior.AllowGet);
}
}
查看 ( ~/Views/Home/Index.cshtml
(:
<script type="text/javascript">
function onDataBinding(e) {
var url = '@Url.Action("LoadTree")';
var result;
$.ajax({
url: url,
data: { },
success: function (data) {
var treeview = $("#TreeView").data("tTreeView");
treeview.bindTo(data);
}
});
}
</script>
@(Html
.Telerik()
.TreeView()
.Name("TreeView")
.ClientEvents(events =>
{
events.OnDataBinding("onDataBinding");
})
)
也许你应该直接在 $.post 的回调方法中调用 treeview.bindTo。我想使用当前代码,您可能会在回调中确保 jn == 内容之前将树视图绑定到 jsonObject == jn。如果您发出警报,则会添加很大的延迟,并且会给 AJAX 帖子足够的时间来完成和运行回调。