Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC视图抛出一个错误_C#_Asp.net Mvc_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

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的回答。建议您对此进行编辑,以便可以接受