无法访问对象内的ViewBag对象

时间:2017-10-02 16:33:25

标签: c# asp.net-mvc

我必须从ViewBag循环,并且需要访问其子类别List下的MainCategory。你可以从Controller获得想法。但我在访问我的子类别项时遇到问题。该错误表示用户没有理由。请看下面的图片以获得更清晰的想法。欢迎任何问题。

控制器:

public ActionResult Index()
        {
            using (var ctx = new db_zikanalyticsEntities())
                {
                    var vmCats = new List<CategriesViewModel>();

                    var l1cats = ctx.Level1Cats.ToList();
                    var l2cats = ctx.Level2Cats.ToList();
                    foreach (var l1 in l1cats)
                    {
                        var catObj = new CategriesViewModel { Level1CatsName = l1.Name };
                        foreach (var l2 in l2cats)
                        {
                            if (l1.Level1CatId == l2.Level1CatId)
                            {
                                catObj.Level2CatsList.Add(new Level2Cats
                                {
                                    Level2CatId = l2.Name,
                                    Name = l2.Name,
                                    Level1CatId = l2.Level1CatId,
                                    Updated = l2.Updated
                                });
                            }
                        }
                        vmCats.Add(catObj);
                    }
                    ViewBag.MainCategory = vmCats;


                return View();
        }


    }

查看:

 @foreach (var item in ViewBag.MainCategory)
                            {
                                <div class="col-md-3">
                                    <div class="mainCategory">
                                        <h4><u>
                                            <b>@item.Level1CatsName</b>
                                            </u></h4>
                                        <h4>
                                            <i class="fa fa-star" aria-hidden="true"></i>
                                            <i class="fa fa-star" aria-hidden="true"></i>
                                            <i class="fa fa-star" aria-hidden="true"></i>
                                            <i class="fa fa-star-half-o" aria-hidden="true"></i>
                                            <i class="fa fa-star-o" aria-hidden="true"></i>
                                        </h4>

                                        <div class="row">
                                            <div class="col-lg-1">
                                                <ul>
                                                    @foreach (var item2 in ViewBag.MainCategory.Level2CatsList)
                                                    {

                                                     <li>@item2.Name</li>


                                                    }
                                                </ul>

                                            </div>
                                        </div>

                                    </div>
                                </div>

                            }

Picture1 Picture2

1 个答案:

答案 0 :(得分:1)

这就是问题所在:

@foreach (var item2 in ViewBag.MainCategory.Level2CatsList)

为了使这成为正确的代码,Level2CatsList需要是MainCategory类的静态成员。是否所有MainCategory实例都具有相同的Level2CatsList值?

可能你的意思是:

@foreach (var item2 in item.Level2CatsList)

如果Level2CatsList是一个实例成员,则上述说法是正确的。

您可能希望为MainCategory包含类def。