2011-03-10 89 views
0

我有一个类别,代表产品类别... 因此,我创建了一个视图,显示了我的类别左树视图... 当用户选择一个TreeView节点,我想在同一页面/视图中显示所有类别数据(右侧)ASP .NET MVC 3设计问题(通过Ajax加载数据)

我到目前为止所做的是通过Ajax加载JQuery TreeView ...并添加了一个Click事件每一个TreeView节点... 的点击通话,通过Ajax,所选择的类别,这样的(CategoryController):

[HttpGet] 
    public ActionResult GetCategory(string idCategory) 
    { 
     if (ModelState.IsValid) 
     { 
      var _category = _categoryRepository.Get(Convert.ToInt16(idCategory)); 

      if (Request.IsAjaxRequest())     
       return Json(_category, JsonRequestBehavior.AllowGet); 

      return RedirectToAction("Index"); 
     } 

     return View(); 
    } 

所以,我得到了客户端上的类别JSON,并且必须手动填充所有字段...

这是正确/最佳方式吗? 我错过了什么吗?

由于到目前为止

保罗

+1

是否使用Bassistance JQuery的TreeView的插件? – 2011-03-10 20:40:24

+0

我正在使用Jstree! – Paul 2011-03-10 20:42:09

+0

从未使用Jstree,但我想它会要求您创建一个返回** [JSON数据]的操作(http://msdn.microsoft.com/zh-cn/library/system.web.mvc.jsonresult。 aspx)**包含类别项目,而不是您的默认视图(除非它实际上代表您的JSON数据)。 – 2011-03-10 20:58:57

回答

0

我解决了,使用KnockoutJs与地图插件...它的工作太棒了!

感谢反正...

保罗

1

如果您使用JSTree,您可以使用JSON_DATA插件从服务器返回JSON数据,并JSTree建立自己的节点为您服务。我不知道你的_category对象是什么样的,但是文档提供了JSTree期望的结构。

{ 
    data : "node_title", 
    // omit `attr` if not needed; the `attr` object gets passed to the jQuery `attr` function 
    attr : { id : "node_identificator", some-other-attribute : "attribute_value" }, 
    // `state` and `children` are only used for NON-leaf nodes 
    state: "closed", // or "open", defaults to "closed" 
    children: [ /* an array of child nodes objects */ ] 
} 

如果你不能在此格式返回数据,那么你就必须手动渲染树节点你现在这样做。

我希望这有助于!

+0

谢谢,但我的jstree已经好了!它的工作完美...我的问题是关于另一部分...什么是最好的方式来填充类别属性,当我点击一些节点,在树视图的同一视图! – Paul 2011-03-10 21:19:13

+0

大卫,我目前被困在拉控制器的节点,你能提供一个例子,显示你如何填充控制器中的数据,状态和孩子吗?我会非常感谢 – Sue 2011-08-17 20:27:56

+0

David,或者Paul能给出一个简单的例子来说明如何从服务器端代码返回json数据? – Sue 2011-08-19 19:51:19