0

適切な構文を探しています。私は 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) %>
4

2 に答える 2

5

モデルのタイプはIEnumerable<MvcMysurvey.Models.Mysurvey>です。

問題は、インデクサー()演算子IEnumerable<T>を公開しないことです。この不便に対処するための2つのオプションがあります。[]

  1. 代わりに配列またはリストを使用してください。
    配列と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) %>
    
  2. メソッドメソッドを使用しますElementAt

    インデクサー演算子を公開してIEnumerable<T>いませんが、同じことを行うLINQ拡張メソッドがあります。方法ですElementAt。_ この構文を使用するには、コードを次のように変更します。

     <% for (int i = 0; i < Model.Count(); i++) {%>
        <%: Html.HiddenFor(m => m.ElementAt(i).ID) %>
    

ただし、配列構文の方がほぼ確実に効率的です。

于 2012-06-15T00:31:15.060 に答える
0

これはあなたが探しているものかもしれないと思いますか?あなたの質問はあまり明確ではありませんが、カウントが何かに等しいという条件に基づいて何かをしようとしているようです。その場合は、if ステートメントを追加して、探している値に対してカウントをチェックするだけです。

<% for (int i = 0; i < Model.Count(); i++)
<% { %>
    <% if (i == someCount) %>
    <% { %>
        <!-- Do Something Here -->
    <% } %>
    <%: Html.HiddenFor(m => m[i].ID) %>
<% } %>
于 2012-06-14T20:16:27.470 に答える