Nic*_*ahn 73 asp.net asp.net-mvc
我有以下剃刀代码,我希望有mm/dd/yyyy
日期格式:
Audit Date: @Html.DisplayFor(Model => Model.AuditDate)
Run Code Online (Sandbox Code Playgroud)
我尝试了许多不同的方法,但这种方法都不适用于我的情况
我的AuditDate是一种DateTime?
类型
我尝试过这样的事情并得到了这个错误:
@Html.DisplayFor(Model => Model.AuditDate.Value.ToShortDateString())
Run Code Online (Sandbox Code Playgroud)
附加信息:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.
试过这个:
@Html.DisplayFor(Model => Model.AuditDate.ToString("mm/dd/yyyy"))
Run Code Online (Sandbox Code Playgroud)
方法'ToString'没有重载需要1个参数
Chr*_*att 136
如果使用DisplayFor
,则必须通过DisplayFormat
属性定义格式或使用自定义显示模板.(DisplayFormatString
可在此处找到预设的完整列表.)
[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime? AuditDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者创建视图Views\Shared\DisplayTemplates\DateTime.cshtml
:
@model DateTime?
@if (Model.HasValue)
{
@Model.Value.ToString("MM/dd/yyyy")
}
Run Code Online (Sandbox Code Playgroud)
这将适用于所有DateTime
s,甚至是你编码时间的那些.如果您希望它仅应用于仅限日期的属性,请使用您Views\Shared\DisplayTemplates\Date.cshtml
的DataType
属性上的属性:
[DataType(DataType.Date)]
public DateTime? AuditDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
最后一个选项是不使用DisplayFor
而是直接渲染属性:
@if (Model.AuditDate.HasValue)
{
@Model.AuditDate.Value.ToString("MM/dd/yyyy")
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*mmy 18
如果您只是输出该模型属性的值,则不需要DisplayFor
html帮助程序,只需使用正确的字符串格式直接调用它.
Audit Date: @Model.AuditDate.Value.ToString("d")
应输出
Audit Date: 1/21/2015
最后,您的审核日期可能为null,因此您应该在尝试格式化可空值之前进行条件检查.
@if (item.AuditDate!= null) { @Model.AuditDate.Value.ToString("d")}
Run Code Online (Sandbox Code Playgroud)
谷歌搜索你得到的错误提供了这个答案,这表明错误是在你的Html助手中使用单词模型.例如,使用@Html.DisplayFor(Model=>Model.someProperty)
.更改这些以使用除了以外的其他内容Model
,例如:@Html.DisplayFor(x=>x.someProperty)
或在这些帮助程序中将大写更改M
为小写m
.
Pio*_*rek 16
我一直在我的代码中使用此更改:
旧代码:
<td>
@Html.DisplayFor(modelItem => item.dataakt)
</td>
Run Code Online (Sandbox Code Playgroud)
新的 :
<td>
@Convert.ToDateTime(item.dataakt).ToString("dd/MM/yyyy")
</td>
Run Code Online (Sandbox Code Playgroud)
您可以在视图模型上使用 [ DisplayFormat ] 属性,因为您希望将此格式应用于整个项目。
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public Nullable<System.DateTime> Date { get; set; }
Run Code Online (Sandbox Code Playgroud)
@ ChrisPratt关于使用显示模板的答案是错误的.使它工作的正确代码是:
@model DateTime?
@if (Model.HasValue)
{
@Convert.ToDateTime(Model).ToString("MM/dd/yyyy")
}
Run Code Online (Sandbox Code Playgroud)
那是因为.ToString()
for Nullable<DateTime>
不接受Format
参数.
小智 5
我以这种方式实现了类似的事情:
@Html.TextBoxFor(Model => Model.AuditDate, "{0:dd-MMM-yyyy}", new{@class="my-style", @readonly=true})
Run Code Online (Sandbox Code Playgroud)
2.在css中给TextBox赋予零轮廓和零边框。
.my-style {
outline: none;
border: none;
}
Run Code Online (Sandbox Code Playgroud)
并且......它完成了:)
对我来说,使用就足够了
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime StartDate { set; get; }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
146347 次 |
最近记录: |