附数据库结构:
代码:
///
<summary>
/// 递归获取子目录列表
/// </summary>
/// <param name="SortList"> 用于存储全部新的列表。 </param>
/// <param name="parentId"> 上一级的id </param>
/// <param name="Counter"> 计数器,用于前台排版 </param>
/// <returns></returns>
private List < CMS_Catalog > GetChildSort(List < CMS_Catalog > SortList, int parentId, int Counter)
{
var v = from l in content.CMS_Catalog where l.ParentId == parentId && l.AppId == 1 select l;
List < CMS_Catalog > _list = v.ToList();
if (_list.Count > 0 )
{
Counter ++ ;
for ( int i = 0 ; i < _list.Count; i ++ )
{
string temp = string .Empty;
for ( int m = 0 ; m < Counter; m ++ )
{
temp += " " ;
}
_list[i].Extended1 = temp; // 存储列表的前台样式
SortList.Add(_list[i]);
GetChildSort(SortList, Convert.ToInt32(_list[i].ID), Counter);
}
}
return SortList;
}
/// 递归获取子目录列表
/// </summary>
/// <param name="SortList"> 用于存储全部新的列表。 </param>
/// <param name="parentId"> 上一级的id </param>
/// <param name="Counter"> 计数器,用于前台排版 </param>
/// <returns></returns>
private List < CMS_Catalog > GetChildSort(List < CMS_Catalog > SortList, int parentId, int Counter)
{
var v = from l in content.CMS_Catalog where l.ParentId == parentId && l.AppId == 1 select l;
List < CMS_Catalog > _list = v.ToList();
if (_list.Count > 0 )
{
Counter ++ ;
for ( int i = 0 ; i < _list.Count; i ++ )
{
string temp = string .Empty;
for ( int m = 0 ; m < Counter; m ++ )
{
temp += " " ;
}
_list[i].Extended1 = temp; // 存储列表的前台样式
SortList.Add(_list[i]);
GetChildSort(SortList, Convert.ToInt32(_list[i].ID), Counter);
}
}
return SortList;
}
调用 :
///
<summary>
/// 目录管理
/// </summary>
/// <returns></returns>
public ActionResult CMSSortManage()
{
List < CMS_Catalog > SortList = new List < CMS_Catalog > ();
ViewData[ " SortList " ] = GetChildSort(SortList, 0 , 0 );
return View();
}
/// 目录管理
/// </summary>
/// <returns></returns>
public ActionResult CMSSortManage()
{
List < CMS_Catalog > SortList = new List < CMS_Catalog > ();
ViewData[ " SortList " ] = GetChildSort(SortList, 0 , 0 );
return View();
}
注意点: 循环不能用foreach(foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。)
否则会报错误:
集合已修改;可能无法执行枚举操作(进来看)
前台页面:
<%
List < PingCoCMS.Model.CMS_Catalog > SortList = ViewData[ " SortList " ] as List < PingCoCMS.Model.CMS_Catalog > ;
foreach (var item in SortList)
{
Response.Write(item.Extended1 + " - " );
Response.Write(item.Name);
Response.Write( " <br /> " );
}
%>
List < PingCoCMS.Model.CMS_Catalog > SortList = ViewData[ " SortList " ] as List < PingCoCMS.Model.CMS_Catalog > ;
foreach (var item in SortList)
{
Response.Write(item.Extended1 + " - " );
Response.Write(item.Name);
Response.Write( " <br /> " );
}
%>
最终样式:
-家用电器
-大 家 电
-洗衣机
-家庭音响
-空调
-洗衣机
-生活电器
-吸尘器
-电熨斗
-取暖电器
-加湿器
-电话机
-厨房电器
-电磁炉
-大 家 电
-洗衣机
-家庭音响
-空调
-洗衣机
-生活电器
-吸尘器
-电熨斗
-取暖电器
-加湿器
-电话机
-厨房电器
-电磁炉