我正在寻找合适的语法。我正在使用MVC,在我看来,我需要遍历模型,因为我需要做一些不同的其他事情。我是一个新手,看了很多帖子,但没有找到语法。 这是代码,它起作用:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcMysurvey.Models.Mysurvey>>" %>
<% foreach (var item in Model) {%>
<%: Html.HiddenFor(m => item.ID) %>
And here is the code I need the syntax for to make it working:
<% for (int i = 0; i < Model.Count(); i++) {%>
<%: Html.HiddenFor(m => m[i].ID) %>
答案 0 :(得分:5)
您的模型属于IEnumerable<MvcMysurvey.Models.Mysurvey>
类型。
问题是IEnumerable<T>
不会公开indexer ([]
) operator。您有两种方法可以解决这种不便。
改为使用数组或列表。
数组和IList<T>
实现确实公开了一个索引器操作符。要使用索引器语法,您需要将模型转换为数组或其他IList<T>
。所以,只需改变你的
<% for (int i = 0; i < Model.Count(); i++) {%>
<%: Html.HiddenFor(m => m[i].ID) %>
到
<% var items = Model.ToArray();
for (int i = 0; i < items.Length; i++) {%>
<%: Html.HiddenFor(m => items[i].ID) %>
虽然IEnumerable<T>
没有公开索引器操作符,但是有一个LINQ扩展方法可以执行相同的操作。它是the ElementAt
method。要使用此语法,您可以将代码更改为:
<% for (int i = 0; i < Model.Count(); i++) {%>
<%: Html.HiddenFor(m => m.ElementAt(i).ID) %>
数组语法几乎肯定会更有效率。
答案 1 :(得分:0)
我想这可能是你在找什么?你的问题不太清楚,但听起来你正在寻找基于计数等于某事的条件做某事。如果是这种情况,你只需要添加一个if语句来检查你正在寻找的任何值的计数。
<% for (int i = 0; i < Model.Count(); i++)
<% { %>
<% if (i == someCount) %>
<% { %>
<!-- Do Something Here -->
<% } %>
<%: Html.HiddenFor(m => m[i].ID) %>
<% } %>