格式化日期时间错误“模板只能与字段访问、属性访问、一维数组索引一起使用
本文关键字:访问 属性 一维数组 索引 一起 字段 错误 时间 日期 格式化 | 更新日期: 2023-09-27 18:35:38
在 MVC Razor 视图中,我正在尝试格式化 DateTime 字段以仅显示时间。使用以下代码,我收到错误"模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
<td>@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss")))</td>
请提供任何帮助,导致此错误的原因以及如何解决?
感谢您的帮助。
我遇到了同样的问题,我已经解决了问题。如果要将"上次更新日期"转换为特定格式,则可以尝试以下操作:
@Html.TextBoxFor(m=>row.LastUpdatedDate,
new { @Value = Convert.ToString(row.LastUpdatedDate.ToShortDateString()) })
DisplayFor 需要一个表达式来标识包含要显示的属性的对象。它将使用内置或自定义模板来呈现该显示。您尝试提供显示逻辑作为该表达式参数,这是无效的。
用
@String.Format("HH:mm:ss", Model.row.LastUpdateDate)
或
@Model.row.LastUpdateDate.ToString("HH:mm:ss")
另一种可能的方法是使用扩展方法来实现相同的目的。使用这种方法,您将不会使用硬编码格式填充视图。
扩展方法
/// <summary>
/// Converts a DateTime string to Date string. Also if Date is default value i.e. 01/01/0001
/// then returns String.Empty.
/// </summary>
/// <param name="inputDate">Input DateTime property </param>
/// <param name="showOnlyDate">Pass true to show only date.
/// False will keep the date as it is.</param>
/// <returns></returns>
public static string ToString(this DateTime inputDate, bool showOnlyDate)
{
var resultDate = inputDate.ToString();
if (showOnlyDate)
{
if (inputDate == DateTime.MinValue)
{
resultDate = string.Empty;
}
else
{
resultDate = inputDate.ToString("dd-MMM-yyyy");
}
}
return resultDate;
}
视图
@Model.LastUpdateDate.ToString(true).
链接:ASP.net MVC 中的日期时间
您有一个非常简单的方法来解决此问题,并且可能会多次遇到此问题。
若要了解发生的情况,请将方法作为参数传递。相反,您应该传递一个表达式。
而不是这样做
<td>@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss")))</td>
你应该做
var date = row.LastUpdatedDate.ToString("HH:mm:ss")
<td>@Html.DisplayFor(m=> date)</td>
而不是文本框使用文本框并在值字段中指定格式,即
@Html.TextBox("textboxName", Model.dateName.ToString("MMM dd yyyy"))
使用引导日期选择器,这看起来像:
<div class="input-group date datetime col-md-8 col-xs-7" data-min-view="2" data-date-format="M dd yyyy">
@Html.TextBox("closeDate", Model.closeDate.ToString("MMM dd yyyy"), new { @class = "form-control", @readonly = "readonly", size = "16", placeholder = Lang.Label_closeDate })
<span class="input-group-addon btn btn-primary">
<span class="glyphicon glyphicon-th"></span>
</span>
</div>