私は現在、ハイブリッド Web フォーム/MVC 2 アプリケーションの MVC 2 部分を MVC 3 に変換する過程にあり (Web フォームや MVC 2 に詳しくありません)、一部の foreach ステートメントでいくつかの問題に遭遇しています。 (元のハイブリッド アプリケーションでは問題なく動作します)。
Razor に変換すると、foreach ステートメントの一部 (すべてではない) が次のようになります。
foreach ステートメントは、'System.Data.Objects.DataClasses.EntityCollection<Project.Activity.PortalMember>' 型の変数を操作できません。'System.Data.Objects.DataClasses.EntityCollection<Project.Activity.PortalMember>' にはパブリックが含まれていないためです「GetEnumerator」の定義
これは、foreach が正常に機能する Web フォーム/MVC 2 アプリケーションの .ascx の例です。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Project.Activity.PortalGroup>" %>
<% if (Model.PortalMembers.Count() > 0) { %>
<div>
<% foreach (var item in Model.PortalMembers) { %>
<div>
<%: item.SubAccount.FirstName %> <%: item.SubAccount.LastName %>
</div>
<%} %>
</div>
<%} %>
これは、エラーが発生している.cshtml変換の私の試みです:
@model Project.Activity.PortalGroup
@if (Model.PortalMembers.Count() > 0)
{
<div>
@foreach (var item in Model.PortalMembers)
{
<div>
@item.SubAccount.FirstName @item.SubAccount.LastName
</div>
}
</div>
}