저는 foreach를 사용하여 ASP.NET MVC의 부분 뷰에있는 객체의 IList를 반복합니다.foreach가 루프 변수를 초기화하지 않습니다.
전체 코드는 다음과 같습니다 (Message는 모델의 클래스 중 하나입니다).
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<Message>>" %>
<%
if (ViewData.Model.Count > 0)
{
foreach (MvcTest.Models.Message m in ViewData.Model)
{
Response.Write(m.RenderHtml());
}
}
%>
어떤 이유로 인해 ResponseWrite에 CS0165가 생성되어 m이 초기화되지 않을 수 있다고 불평합니다.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<Message>>" %>
<%
//Can't see why I have to declare this as a variable, but I get CS0165 if I use ViewData.Model directly in the foreach
IList<MvcTest.Models.Message> messages = ViewData.Model;
if (messages.Count > 0)
{
foreach (MvcTest.Models.Message m in messages)
{
Response.Write(m.RenderHtml());
}
}
%>
즉 명시 적으로 IList에 대한 변수를 선언하기보다는 단지 (강력한 형식) 모델을 사용하고 그것을 잘 작동합니다 :
나는 이런 식으로 재 작성.누군가 내가 왜 문제를 해결했는지 설명 할 수 있습니까?
"ViewData.Model"속성의 정확한 유형은 무엇입니까? –
메시지 목록을 생성하는 데 사용한 코드를 표시 할 수 있습니까? 내 추측은 그것이 당신의 실수가있는 곳입니다. 이것이 Linq2SQL 또는 Entities Framework 인 경우 "로드"문이 부족할 수 있습니다. – Alxandr
'ViewData.Model'을'IEnumerable'로 변환하면 어떻게됩니까? –
SLaks