是否有可能获得ViewData集合长度

时间:2016-04-28 04:39:03

标签: asp.net asp.net-mvc asp.net-mvc-4 razor-2

因为我必须在整个代码库中基于集合索引号引入一些条件if else语句

控制器传递:

 ViewData["productSl_1"] = appDataContext.Products.ToList();

查看:

@{var viewDataProd = ViewData["productSl_1"] as IEnumerable<Nazmulkp.Models.Product>;}
    @for (var i = 0; i < viewDataProd.length; i++) {
            {

            }

编译时错误:

  

不包含&#39; length&#39;的定义并且没有延长方法&#39;长度&#39;接受类型&#39;长度&#39;

的第一个参数

2 个答案:

答案 0 :(得分:0)

您可以将其投射到IList并使用Count:

ViewData["productSl_1"] = appDataContext.Products.ToList();
@{ var viewDataProd = ViewData["productSl_1"] as IList<Nazmulkp.Models.Product>;}
    @for (var i = 0; i < viewDataProd.Count; i++) {
    {

    }

答案 1 :(得分:0)

我不会使用查看数据。我会按原样将整个列表传递给视图。

你的行动方法看起来像这样。从您的数据源获取产品并将此列表直接发送到视图:

...
name: "Dividend Compare",
viewId: "test",
pattern: "Dividend-Compare",
target: "dividendcompare"
...

设置视图以接收产品列表。使用// Make use of the using directive using Nazmulkp.Models; public ActionResult Index() { // Get you products from your data source // I used a repository, but you can use any other way to get your data List<Product> products = productRepository.GetAll(); return View(products); } 而不是for loop循环浏览这些产品。您现在可以访问索引,即foreach loop,然后您可以使用此索引访问列表中的各个产品,例如:

i

您的观点可能如下所示:

@Model[i].Name
@Model[i].Description
@Model[i].Price

如果您需要在@model List<Nazmulkp.Models.Product> @for (i = 0; i < Model.Count; i++) { <div>@Model[i].Name</div> } 中使用if else statement,那么它将如下所示:

for loop