signed

QiShunwang

“诚信为本、客户至上”

ASP.NET4.0+MVC3+Razor如何实现二级列表循环

2016-10-18 22:21:24   来源: 郑州网站建设

     ASP.NET就不用介级了,MVC3是指模型-视图-控制器 (MVC) 模式,是一项将 Web 应用程序组件分开的体系结构设计原则。 通过分开组件,您可以更好地控制应用程序的单个部件,从而能够更加轻松地开发、修改和测试这些部件。

    Razor是MVC3新引入的一种模板引擎,是一个干净的、轻量级的、简单实用的视图引擎。

    实现二级列表循环的话,不管是官方文档,还是书本比较少提到,这里博宏网络通过示例来演示解决这个问题。

    第一步,Model类如下

 

namespace test.Admin.Models
{
    public class AdminPurview
    {
        [Key]
        public int purview_id { get; set; }
        public string purview_name { get; set; }
        public int parent_id { get; set; }
        public int order_id { get; set; }
        public byte is_enable { get; set; }
        public IEnumerable<AdminPurview> sub { get; set; }
    }
}

第二步,Controllers类如下 

   public ActionResult Create()
        {
           var purview=db.AdminPurview.Where(s => s.parent_id.Equals(0)).ToList();
           foreach (var p in purview)
           {
               p.sub=db.AdminPurview.Where(s => s.parent_id.Equals(p.purview_id)).ToList();
           }
           ViewBag.purview = purview;
           return View();
        } 

第三步,View类如下
@foreach (var p in ViewBag.purview)
         {
             
            <fieldset>
            <legend>
            <input type="checkbox"  name="purview"  id="purview@(p.purview_id)" onclick="check('purview@(p.purview_id)',this)" value="@p.purview_id"  /><label for="purview@(p.purview_id)">@p.purview_name</label>
            </legend>
            <dl>
               @foreach(var p1 in @p.sub)
               {
                   <dd><input type="checkbox"  name="purview" class="purview@(p.purview_id)"  id="purview@(p1.purview_id)" onclick="check('purview',this)" value="@p1.purview_id"  /><label for="purview@(p1.purview_id)" >@p.purview_name</label></dd>
               }
            </dl>
            </fieldset>
         }

方法总结,通过Model类建一个IEnumerable子类型  public IEnumerable<AdminPurview> sub { get; set; },然后通过嵌套foreach实现。