我一直在使用以下Lynda.com tutorial来学习MVC 4和Razor。我一直试图让显示的时间只显示小时,分钟,然后是上午/下午。截至目前,屏幕仍包括秒数(如下所示):
我尝试格式化我的日期,例如this post about DateTime,这不起作用。现在我在我的函数中的名为“AuctionsController.vb”的控制器部分中有以下代码,similar to this post:
Function Auction() As ActionResult
Dim mainauction = New MVCAuction3.Models.Auctions
Dim ts As New TimeSpan(10, 0, 0)
mainauction.Title = "Example Auction"
mainauction.Description = "This is an example Auction"
mainauction.StartTime = DateTime.Now + ts
mainauction.EndTime = DateTime.Now.AddDays(7) + ts
mainauction.StartPrice = 1.0
mainauction.CurrentPrice = Nothing
ViewData("Auction") = mainauction
Return View()
End Function
这就是Razor如何显示“Auction.vbhtml”视图中的内容:
<p>Start Time: @auction.StartTime.ToString() </p>
<p>End Time: @auction.EndTime.ToString()</p>
<p>Starting Price: @FormatCurrency(auction.StartPrice.ToString())</p>
修改(一个或多个):
这就是我在模态文件中声明时间变量的方式:
Private Property x_StartTime As DateTime
Private Property x_EndTime As DateTime
Public Property StartTime() As DateTime
Get
Return x_StartTime
End Get
Set(value As DateTime)
x_StartTime = value
End Set
End Property
Public Property EndTime() As DateTime
Get
Return x_EndTime
End Get
Set(value As DateTime)
x_EndTime = value
End Set
End Property
我还尝试从“Auction.vhtml”视图中获取以下内容,不幸的是,它给了我服务器错误,指示“输入字符串的格式不正确。” :
<p>Start Time: @auction.StartTime.ToString("g") </p>
<p>End Time: @auction.EndTime.ToString("g")</p>
<p>Starting Price: @FormatCurrency(auction.StartPrice.ToString())</p>
在没有格式化时间的Razor或MVC代码中,我做错了什么?非常感谢任何帮助!
答案 0 :(得分:6)
您应该查看MSDN上的Custom Date and Time Format Strings。基本上,您可以将格式字符串传递给ToString
对象的DateTime
方法。
以下是省略秒数的示例:
auction.StartTime.ToString("M/d/yyyy hh:mm tt")
答案 1 :(得分:0)
我强烈建议您查看DisplayFormat
(MSDN)属性。您可以将其附加到您的模型StartTime
属性,如此
[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString = "{0:M/d/yyyy hh:mm tt}")]
public DateTime StartTime {get;set;}
然后您将通过DisplayFor
函数输出视图中的信息:
@Html.DisplayFor(x=> x.StartTime)