【发布时间】:2019-05-23 20:43:59
【问题描述】:
我的模型中有以下代码
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public DateTime DateAdded { get; set; }
[Display(Name = "Release Date")]
public DateTime ReleaseDate { get; set; }
[Display(Name = "Number in Stock")]
public byte NumberInStock { get; set; }
public Genre Genre { get; set; }
[Display(Name = "Genre")]
[Required]
public byte GenreId { get; set; }
这是我的控制器编码器错误点显示
[HttpPost]
public ActionResult Create(Movie movie)
{
_context.Movies.Add(movie);
_context.SaveChanges();
return RedirectToAction("Index", "Movies");
}
这就是风景
<div class="form-group">
@Html.LabelFor(m => m.Movie.ReleaseDate)
@Html.TextBoxFor(m => m.Movie.ReleaseDate, "{0:d MMM yyyy}", new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Movie.GenreId)
@Html.DropDownListFor(m => m.Movie.GenreId, new SelectList(Model.Genres, "Id", "Name"), "Select Movie Genre", new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Movie.NumberInStock)
@Html.TextBoxFor(m => m.Movie.NumberInStock, new { @class = "form-control" })
</div>
<button type="submit" class="btn btn-primary">Save</button>
当我点击提交按钮时,我得到一个错误:
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。
对这个问题有任何想法吗?我假设这是一个日期时间问题,但我无法解决问题。我是这方面的初学者。
【问题讨论】:
-
确保你use
datetime2rather thandatetime;如果它可以为空,请确保该列可以为空。 -
它已经可以为空了。但为什么我需要 datetime2? @Richardissimo
-
我提供了一个链接,解释了为什么使用 datetime2 而不是 datetime...你读了吗? Datetime2 的范围比 datetime 更广,从而防止了这种超出范围的问题(以及其他几个很好的理由。)
标签: c# asp.net-mvc-5