C# 日期是01/01/0001,而不是数据库中的日期?

C# 日期是01/01/0001,而不是数据库中的日期?,c#,sql,sql-server,asp.net-mvc-3,C#,Sql,Sql Server,Asp.net Mvc 3,我的sql server 2008 r2数据库中有这一行,但我不明白: 2012-12-06 11:00:36.703 and is of type DATETIME 当我在视图中显示它时,它是: Mon, Jan 1, 0001 这是我的代码: var allNews = ZincService.NewsService.GetNewsPostsForId(id); List<Zinc.Web.Areas.News.ViewModels.Home.NewsPostsViewMode

我的sql server 2008 r2数据库中有这一行,但我不明白:

2012-12-06 11:00:36.703 and is of type DATETIME
当我在视图中显示它时,它是:

Mon, Jan 1, 0001 
这是我的代码:

var allNews = ZincService.NewsService.GetNewsPostsForId(id);

List<Zinc.Web.Areas.News.ViewModels.Home.NewsPostsViewModel> newsItems = new List<NewsPostsViewModel>();

foreach (var newsItem in allNews)
{ 
  NewsPostsViewModel newsItemViewModel = new NewsPostsViewModel();
  newsItemViewModel.CommentDate = String.Format("{0:ddd, MMM d, yyyy}", newsItem.CommentDate);
}

public class NewsPostsViewModel
{
  public Entities.News.News MainNews { get; set; }
  public virtual string News { get; set; }
  public virtual int NewsId { get; set; }
  public virtual string CommentDate { get; set; }
}

  public List<DataModels.News.NewsPostsDataModel> GetNewsPostsForId(int id)
{
  using (SqlConnection conn = new SqlConnection(ZincModelContainer.CONNECTIONSTRING))
  {
    using (SqlCommand cmd = conn.CreateCommand())
    {
      conn.Open();
      cmd.CommandType = System.Data.CommandType.StoredProcedure;
      cmd.CommandText = "[News].[GetNewsPostsForId]";

      SqlParameter param = new SqlParameter("@Id", System.Data.SqlDbType.Int);
      param.Value = id;
      cmd.Parameters.Add(param);

      List<DataModels.News.NewsPostsDataModel> news = new List<DataModels.News.NewsPostsDataModel>();

      using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
      {
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        foreach (DataRow row in dt.Rows)
        {
          string message = Convert.ToString(row["NewsDescription"]);
          news.Add(new DataModels.News.NewsPostsDataModel { NewsPostId = id ,Message = message});
        }
      }

      return news;
    }
  }
}

public class NewsPostsDataModel
{
  public virtual int NewsPostId { get; set; }
  public virtual string Message { get; set; }
  public virtual DateTime CommentDate { get; set; }
}
var allNews=ZincService.newservice.GetNewsPostsForId(id);
列表新闻项=新列表();
foreach(allNews中的var newsItem)
{ 
NewsPostsViewModel newsItemViewModel=新的NewsPostsViewModel();
newsItemViewModel.CommentDate=String.Format(“{0:ddd,MMM d,yyyy}”,newsItem.CommentDate);
}
公共类NewsPostsViewModel
{
public Entities.News.News MainNews{get;set;}
公共虚拟字符串News{get;set;}
公共虚拟int NewsId{get;set;}
公共虚拟字符串CommentDate{get;set;}
}
公共列表GetNewsPostsForId(int id)
{
使用(SqlConnection conn=newsqlconnection(ZincModelContainer.CONNECTIONSTRING))
{
使用(SqlCommand cmd=conn.CreateCommand())
{
conn.Open();
cmd.CommandType=System.Data.CommandType.StoredProcess;
cmd.CommandText=“[News].[GetNewsPostsForId]”;
SqlParameter param=新的SqlParameter(“@Id”,System.Data.SqlDbType.Int);
参数值=id;
cmd.Parameters.Add(param);
列表新闻=新列表();
使用(SqlDataAdapter=newsqldataadapter(cmd))
{
DataTable dt=新的DataTable();
适配器填充(dt);
foreach(数据行中的数据行)
{
字符串消息=Convert.ToString(行[“NewsDescription”]);
news.Add(newdatamodels.news.NewsPostsDataModel{NewsPostId=id,Message=Message});
}
}
返回消息;
}
}
}
公共类NewsPostsDataModel
{
公共虚拟int NewsPostId{get;set;}
公共虚拟字符串消息{get;set;}
公共虚拟日期时间注释日期{get;set;}
}
有人能帮我吗?

这就是问题所在:

news.Add(new DataModels.News.NewsPostsDataModel { NewsPostId = id ,Message = message});
这里没有填充
CommentDate
,因此它的默认值是
DateTime.MinValue

当然,我们现在无法判断您的存储过程是否返回了值,但假设它返回了值,您应该从
数据行
中提取它并将其放入您的模型中


在修复代码之前,您应该后退一步,考虑一下您的诊断过程。你试过调试这个吗?添加日志记录?您应该能够很快看到模型中没有
CommentDate
,然后尝试找出为什么没有
CommentDate
,这应该会引导您回到创建模型实例的代码。如果您可以改进诊断过程,就不必问那么多问题,从而大大加快了您未来的发展。

这表明您没有正确地获取诊断过程。不幸的是,您没有向我们提供有关如何访问它的任何信息。如果没有更多信息,我们目前无法帮助您。请阅读DB或varchar中的datetime字段。您如何获取
新闻项。CommentDate
,当前显示的是
日期时间。MinValue
显然
新闻项。CommentDate
返回后尚未初始化。您如何分配CommentDate的值?您没有提供足够的代码/信息来提供适当的解决方案。@charlie_cat:您是否验证了您现在已经在模型中实际获得了日期?您执行了什么调试?很抱歉,我看到了您指出的问题,我正在尝试快速修复,谢谢我的问题出现在我的存储库var dateTime=Convert.ToDateTime(行[“DateAndTime”]);news.Add(newdatamodels.news.NewsPostsDataModel{NewsPostId=id,newcomment=message,CommentDate=dateTime});