我有一个返回消息列表的控制器
public ActionResult MainMenu()
{
var myDataOp = new DataBaseOperations();
var Message=myDataOp.GetMessages();
return View(Message);
}
这是获取列表的函数
public List<ViewClass> GetMessages()
{
PrincelysDataContext pData = new PrincelysDataContext();
Princelys.Models.ViewClass myViewList =new ViewClass();
var myMessage =from r in pData.Messages select r;
DateTime presentTime = new DateTime();
foreach (var myValues in myMessage)
{
myViewList.myMessage.Add(new ViewClass
{
CreatedName ="ffff",// (from m in pData.Users where m.userid == myValues.createdBy select m.userName).Single(),
Messages = myValues.Message,
CreateOn = myValues.createddatetime.Subtract(presentTime)
});
}
return myViewList.myMessage;
}
然后我在视图页面中使用我的列表。
@model Princelys.Models.ViewClass
....
@foreach (var messageValues in Model.myMessage)
{
<li class="left clearfix">
<span class="chat-img pull-left">
<img src="http://placehold.it/80/30a5ff/fff" alt="User Avatar" class="img-circle" />
</span>
<div class="chat-body clearfix">
<div class="header">
<strong class="primary-font">@messageValues.CreatedName</strong> <small class="text-muted">@messageValues.CreateOn.TotalHours mins ago</small>
</div>
<p>
@messageValues.Messages
</p>
</div>
</li>
}
在浏览器上运行视图页面时出现错误
传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [Princelys.Models.ViewClass]',但此字典需要类型为'Princelys.Models.ViewClass'的模型项。< / p>
这是包含属性的类
public class ViewClass
{
public ViewClass()
{ myMessage = new List<ViewClass>(); }
public string CreatedName { get; set; }
public string Messages { get; set; }
public TimeSpan CreateOn { get; set; }
public List<ViewClass> myMessage;
}
这是我的第一个MVC 5项目。任何帮助将不胜感激。
答案 0 :(得分:1)
您正在控制器操作中返回List<ViewClass>
,但看起来您的视图是使用ViewClass
强列入的。将其更改为@model IEnumerable<ViewClass>
或其他方式,即从控制器返回ViewClas
。
根据评论,问题GetMessages
应该返回ViewClass
,所以它应该如下所示
public ViewClass GetMessages()
{
PrincelysDataContext pData = new PrincelysDataContext();
Princelys.Models.ViewClass myViewList =new ViewClass();
var myMessage =from r in pData.Messages select r;
DateTime presentTime = new DateTime();
foreach (var myValues in myMessage)
{
myViewList.myMessage.Add(new ViewClass
{
CreatedName ="ffff",// (from m in pData.Users where m.userid == myValues.createdBy select m.userName).Single(),
Messages = myValues.Message,
CreateOn = myValues.createddatetime.Subtract(presentTime)
});
}
return myViewList;
}
答案 1 :(得分:0)
您正在将一个List传递给视图,但您的视图强烈地键入该列表的单个成员。尝试在模型中更改此内容:
@model List<ViewClass>