我正在使用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”属性的确切类型是什么? – 2010-03-09 13:27:29
您可以显示您用于生成消息列表的代码吗?我的猜测是那是你的错误所在。如果这是Linq2SQL或Entities Framework,那么您可能只是缺少一个“Load”语句。 – Alxandr 2010-03-09 13:33:06
如果将'ViewData.Model'强制转换为'IEnumerable',会发生什么? –
SLaks
2010-03-09 13:33:14