2014-08-29 52 views
0

我使用实体框架和剃刀,我有三个CategoryModel。这些来自相同的基类。第一个ContentCategoryModel,ProdCategoryModel和NewsCategoryModel。 我的问题是我怎样才能使用一个ArrayList的“foreach循环”。动态类ArrayList

@{ 
Layout = "~/Views/Shared/_ManageLayout.cshtml"; 

ArrayList catList = ViewBag.catList; 

} 

<ul> 
/*But ArrayList can contain ContentCategoryModel or NewsCategoryModel or ProdCategoryModel, how can i use this foreach dynamically. because i don't want to use three different foreach*/ 
    @foreach (ContentCategoryModel cat in catList) 
    { 
     <li> 
      @cat.CategoryName 
     </li> 
    } 
</ul> 
+2

投下他们作为基类即可。 – 2014-08-29 13:13:15

+0

没关系。谢谢。 – Yargicx 2014-08-29 17:01:22

回答

-1
@foreach(var cat in catlist){ 
    .... 
} 
+1

'ArrayList'只保存对象,所以'cat'将是一个'object'。 – 2014-08-29 15:29:01

1

ArrayList只是持有的对象,所以你必须将它转换为一种有效地使用它。既然你有一个基本类型,你可以只投它:

@foreach (CategoryModel cat in catList.Cast<CategoryModel>()) 
{ 
    <li> 
     @cat.CategoryName 
    </li> 
} 

或重复三次寻找每种类型:

@foreach (ContentCategoryModel cat in catList.OfType<ContentCategoryModel>()) 
{ 
    <li> 
     @cat.CategoryName 
    </li> 
} 

@foreach (ProdCategoryModel cat in catList.OfType<ProdCategoryModel>()) 
{ 
    <li> 
     @cat.CategoryName 
    </li> 
} 

@foreach (NewsCategoryModel cat in catList.OfType<NewsCategoryModel>()) 
{ 
    <li> 
     @cat.CategoryName 
    </li> 
}