C# MVC视图抛出一个错误
我有一个控制器,可以返回消息列表C# MVC视图抛出一个错误,c#,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我有一个控制器,可以返回消息列表 public ActionResult MainMenu() { var myDataOp = new DataBaseOperations(); var Message=myDataOp.GetMessages(); return View(Message); } 下面是获取列表的函数 public List<ViewClass> GetMessages() { PrincelysDataContext pData
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;
}
public List GetMessages()
{
PrincelysDataContext pData=新PrincelysDataContext();
Princelys.Models.ViewClass myViewList=新的ViewClass();
var myMessage=来自pData中的r。消息选择r;
DateTime presentTime=新日期时间();
foreach(myMessage中的var myValues)
{
myViewList.myMessage.Add(新建ViewClass
{
CreatedName=“ffff”,/(来自pData.Users中的m,其中m.userid==myValues.createdBy,通过选择m.userName)。Single(),
Messages=myValues.Message,
CreateOn=myValues.createddatetime.Subtract(当前时间)
});
}
返回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>
@model Princelys.Models.ViewClass
....
@foreach(Model.myMessage中的var messageValues)
{
@messageValues.CreatedName@messageValues.CreateOn.TotalHours分钟前
@messageValues.Messages
}
在浏览器上运行“查看”页面时出错
传递到字典的模型项的类型为“System.Collections.Generic.List`1[Princelys.Models.ViewClass]”,但此字典需要“Princelys.Models.ViewClass”类型的模型项
这是保存属性的类
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;
}
公共类视图类
{
公共视图类()
{myMessage=new List();}
公共字符串CreatedName{get;set;}
公共字符串消息{get;set;}
public TimeSpan CreateOn{get;set;}
公共列表信息;
}
这是我的第一个MVC5项目。非常感谢您的帮助。您正在控制器操作中返回
列表
,但是您的视图似乎是用视图类
强键入的。将其更改为@model IEnumerable
或其他方式,即从控制器返回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;
}
您正在将一个列表传递给视图,但您的视图被强类型化为该列表的单个成员。尝试在您的模型中更改此选项:
@model List<ViewClass>
@型号列表
我对模型的声明是:@model Princelys.Models.viewClass消息是不言自明的。将列表
传递到需要单个视图类的视图
。更改一个或另一个,使它们匹配您尚未提供有关视图呈现内容的足够信息,但我怀疑您的方法需要是public ViewClass GetMessages()
,其中包含return myViewList代码>(不是返回myViewList.myMessage;
)谢谢,你的权利改变了我的方法,正如你所说的那样完成了工作,节省了很多时间。谢谢Stephen基于OP的代码,可能是另一种方式-控制器应该返回ViewClass
:)查看我对问题的评论和OP的回答。建议您对此进行编辑,以便可以接受