C# 在视图中显示SQL Server数据

C# 在视图中显示SQL Server数据,c#,sql-server,asp.net-mvc,C#,Sql Server,Asp.net Mvc,好的,我看到了一些类似的问题。但我无法拼凑出一个答案来解决我的特殊问题 基本上,我试图从SQLServer获取数据,将其打印到一个简单的视图上,对吗?。问题是:我在视图上发生了许多其他事情。所以,我必须使用一个模型 以下是我所拥有的我对ASP.NET MVC非常陌生: 模型 下面是我试图写入模型/类的pref //display props public string QUID_Disp { get; set; } public string QU_User_Disp { get; set; }

好的,我看到了一些类似的问题。但我无法拼凑出一个答案来解决我的特殊问题

基本上,我试图从SQLServer获取数据,将其打印到一个简单的视图上,对吗?。问题是:我在视图上发生了许多其他事情。所以,我必须使用一个模型

以下是我所拥有的我对ASP.NET MVC非常陌生:

模型

下面是我试图写入模型/类的pref

//display props
public string QUID_Disp { get; set; }
public string QU_User_Disp { get; set; }
public string Admin_User_Disp { get; set; }
public string Reg_User_Disp { get; set; }

public List<Registrar> Events { get; set; }
和视图:

@model QUTools.Models.Registrar
//Things that are working here......
@{

    foreach (var item in Model.Events)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.QU_User_Disp)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.QUID_Disp)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Admin_User_Disp)
            </td>
        </tr>
    }
}
并说:

QUT.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码中处理

您正在对NULL属性调用Add方法。Add方法适用于非空集合。因此,在调用Add方法之前,需要将Events集合初始化为空集合

您可以在视图模型类的构造函数中执行此操作

public class Registrar
{
   public string QUID_Disp { get; set; }
   public string QU_User_Disp { get; set; }
   public string Admin_User_Disp { get; set; }
   public string Reg_User_Disp { get; set; }
   public List<Registrar> Events { get; set; }

   public YourViewModel()
   {
     Events = new List<Registrar>();
   }
}

如果这就是错误所在,那么与MVC无关。在此之后,您将得到一个错误,因为传递到事件视图列表的数据与视图模型注册器不匹配。对于您的SQL错误,请看以下内容:特别是最小部分,例如,视图代码与此错误无关-尝试将数据加载移动到其自己的方法中,甚至类/数据层中,以将数据加载与数据查看分开,这样您就可以看到数据加载中出现错误的位置。我有一个想法:了解如何调试代码。嘿,Ramimilu啊,似乎没有。仍在获取空值。我运行了SQLCMD,它提取了许多VAL,没有一个是空的。嘿,冻结了,真不错…初始化-用户。事件=新列表;对不起,Shyju。在这是我第一次尝试MVC项目之前,我从未使用过列表。您的代码帮助我解决了空错误。但现在我不断收到错误,传入字典的模型项的类型为“System.Collections.Generic.List`1[QUTools.Models.register]”,但此字典需要类型为“QUTools.Models.register”的模型项我真的不理解这个错误,因为我传递到列表中的项目不是qutools.models.register类型吗?这似乎发生在视图中。您的GET操作看起来如何?你应该通过一个物体,我不知道你的意思。但是,我正在使用模型中的foreach var item在视图中传递object users.Events和。Events,然后尝试如下方式显示数据:@Html.DisplayForm=>item.QU_User\u disp如果将users.Events从操作方法传递到视图,您的视图应该是强类型的列表,并且应该在模型中使用foreachvar项来循环它。是的,工作非常好。再次感谢你,Shyju!
users.Events.Add (new Registrar...
public class Registrar
{
   public string QUID_Disp { get; set; }
   public string QU_User_Disp { get; set; }
   public string Admin_User_Disp { get; set; }
   public string Reg_User_Disp { get; set; }
   public List<Registrar> Events { get; set; }

   public YourViewModel()
   {
     Events = new List<Registrar>();
   }
}
Registrar users = new Registrar();
users.Events=new List<Registrar>();
Registrar users = new Registrar { Events=new List<Registrar>() };
public class UserWithEventsVm
{
  public string DisplayName {set;get;}
  public List<EventVm> Events {set;get;}
  //Add other properties as needed by the view

  public UserWithEventsVm()
  {
    Events=new List<EventVm>();
  }
}
public class EventVm
{
  public int Id {set;get;}
  public string EventTitle {set;get;} 
}