我正在使用foreach在ASP.NET MVC的Partial View中循环遍历IList对象。
这是整个代码(消息是模型中的一个类)。
<%@ 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的变量而不仅仅使用(强类型)模型,它工作正常。
任何人都能解释为什么我所做的解决了这个问题吗?
答案 0 :(得分:3)
尝试将Inherits
声明更改为
Inherits="System.Web.Mvc.ViewUserControl<System.Collections.Generic.IList<MvcTest.Models.Message>>"
但是,我不确定它是否会有所帮助。