树形菜单,可以简单的认为是<ul>标签的嵌套,在Html中的格式就是
1、HTML
2、控制器利用,强类型
public ActionResult ProductsSortTree()
{
var ProductsSortList = OperateContext.Current.BLLSession.IProductsSortBLL.GetListBy_NoTrack(s => s.ProductsSortID > 0).Select(s =>new Model.ViewModel.ProductsSort()
{
ProductsSortName = s.ProductsSortName,
ProductsSortID = s.ProductsSortID,
nodes = s.GoodsSorts.Select(t => new Model.ViewModel.GoodSort()
{
GoodsSortID = t.GoodsSortId,
GoodsSortName = t.GoodsSortName,
nodes = t.Goods.Select(
u => new Model.ViewModel.Good() {
GoodsID=u.GoodsID,GoodsName=u.GoodsName
}).ToList()
}).ToList()
}).ToList();
return PartialView(ProductsSortList);
// return PartialView("ProductsSortSetup");
}
@model List<Model.ViewModel.ProductsSort>给视图
ef查出的数据,只要数据库是约束关系,一次查完
3、js
$('#tree li>a').click(function (event) {
/* Act on the event */
if ($(this).parent('li').find('ul').length > 0) {
if ($(this).siblings('ul').is(':hidden')) {
$(this).parent('li').addClass('open').children('ul').show();
$(this).parent('li').siblings().removeClass('open').children('ul').hide();
} else {
$(this).parent('li').removeClass('open').children('ul').hide();
}
} else {
$(this).parent('li').siblings().removeClass('open');
}
$(this).parent('li').siblings().children('ul').hide();
$(this).addClass('active').parent('li').siblings('li').find('a').removeClass('active');
})