只显示date和时间

在MVC剃刀,我正在这样的数据库中的当前date..

model.Returndate = DateTime.Now.Date.ToShortDateString(); 

由于数据库字段是一个date时间数据types,我将当前date转换为string格式,这是行不通的..我怎么能这样做? 我正在做的string格式,因为我想要的date以mm / dd / yyyy格式,而不是在mm / dd / yyyy hh:mm:ss时间格式..

编辑:

在我有控制器

 var model = new ViewModel(); model.ReturnDate = DateTime.Now; return PartialView("PartialView", model); 

在部分观点,我有

 @Html.EditorFor(model => model.Returndate) 

这是它在date和时间一起显示的date…我只想显示date。 不是时候。 我希望这个编辑更好地解释。

如果列types是SQL中的date时间,那么它将存储您传递一个或不是一个时间。

最好妥善保存date:

 model.ReturnDate = DateTime.Now; 

然后在需要显示时进行格式化:

 @Html.Label(Model.ReturnDate.ToShortDateString()) 

或者,如果您使用的是EditorFor:

 @Html.EditorFor(model => model.ReturnDate.ToShortDateString()) 

要么

 @Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy")) 

要将属性添加到模型中,请添加以下代码:

 public string ReturnDateForDisplay { get { return this.ReturnDate.ToString("d"); } } 

然后在你的PartialView中:

 @Html.EditorFor(model => model.ReturnDateForDisplay) 

编辑:

嗨,大家好,只是想澄清这个答案,我的话说'如果你使用EditorFor',这意味着你需要有一个EditorFor你想要代表的types的值的模板。

编辑器模板是pipe理MVC中重复控件的一种很酷的方式:

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

你可以像上面所做的那样,将它们用于像String这样天真的types; 但是对于让您为更复杂的数据types设置一组input字段,它们特别好。

只是不得不自己处理这个场景 – 发现了一个非常简单的方法来做到这一点,只需在模型中注释你的属性就可以了:

 [DataType(DataType.Date)] public DateTime? SomeDateProperty { get; set; } 

它也会隐藏dateselect器的时间button。

对不起,如果这个答案有点晚了;)

如果你想在文本框中显示这个工程:

 @Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}") 

数据库中的date/时间根本不是格式化版本。 这只是date/时间本身。 从数据库中提取值时,如何显示该date/时间是另一回事。 我强烈怀疑你真的只想要:

 model.Returndate = DateTime.Now.Date; 

或者可能

 model.Returndate = DateTime.UtcNow.Date; 

是的,如果您使用SQL Server Studio或其他方法查看数据库,现在可以看到午夜了 – 但这是不相关的,当您从数据库中提取date并将其显示给用户时, 可以应用相关的格式。

编辑:关于你编辑的问题,问题不在于模型 – 这是你如何指定视图。 你应该使用像这样的东西:

 @Html.EditorFor(model => model.Returndate.Date.ToString("d")) 

其中d是短date模式的标准date和时间格式说明符 (这意味着它将考虑当前的文化设置)。

这就是我反复说过的一点 – 当你向用户显示date/时间时 ,就是把时间格式化为date的时间。

编辑:如果这不起作用,应该有一种装饰模型或视图与格式string的方式 – 或类似的东西。 我不是一个真正的MVC的人,但它感觉应该是一个很好的方式来做这个声明…

您可以使用ToString来应用自定义date时间格式,如:

 DateTime.Now.Date.ToString("MM/dd/yyyy"); 

进一步阅读DateTime.ToString格式模式可以在这里和这里find。

编辑:在您的问题编辑之后,就像其他人build议您应该在您的视图中应用date格式:

 model.Returndate = DateTime.Now.Date; @Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy")) 

我不确定在剃刀,但在ASPX你做:

  <%if (item.Modify_Date != null) {%> <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%> <%} %> 

剃刀上一定有类似的东西。 希望这会帮助某人。

你可以修改你的ViewModel如下:

 [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)] 

如果你有一个for循环如下面的那个。

@ item.StartDate更改为@ item.StartDate.Value.ToShortDateString()

这将消除时间,以防万一你不能像在我的情况下在模型中注释你的财产。

 <table> <tr> <th>Type</th> <th>Start Date</th> </tr> @foreach (var item in Model.TestList) { <tr> <td>@item.TypeName</td> <td>@item.StartDate.Value.ToShortDateString()</td> </tr> } </table> 

你可以简单地转换date时间。 就像是:

 @Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))