格式化DateTime错误“模板只能用于字段访问,属性访问,单维数组索引..”

在MVC Razor视图中,我试图格式化DateTime字段以仅显示时间。 使用下面的代码我收到错误“模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。”

@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss"))) 

任何帮助请问是什么导致此错误以及如何解决它?

谢谢你的帮助。

DisplayFor需要一个表达式,用于标识包含要显示的属性的对象。 它将使用内置或自定义模板来呈现该显示。 您试图将显示逻辑提供为表达式参数,该参数无效。

使用

 @String.Format("HH:mm:ss", Model.row.LastUpdateDate) 

要么

 @Model.row.LastUpdateDate.ToString("HH:mm:ss") 

我遇到了同样的问题,我已经解决了这个问题。 如果您想将“LastUpdatedDate”转换为特定格式,那么您可以尝试这样做:

 @Html.TextBoxFor(m=>row.LastUpdatedDate, new { @Value = Convert.ToString(row.LastUpdatedDate.ToShortDateString()) }) 

另一种可能的方法是使用扩展方法来实现相同的目标。 使用该方法,您将不会使用硬编码格式填充视图。

扩展方法

  ///  /// Converts a DateTime string to Date string. Also if Date is default value ie 01/01/0001 /// then returns String.Empty. ///  /// Input DateTime property  /// Pass true to show only date. /// False will keep the date as it is. ///  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中的DateTime日期

你有一个非常简单的方法来解决这个问题,你可能不止一次遇到这个问题。

要了解发生了什么,您将传递方法作为参数。 相反,你应该传递一个表达式。

而不是这样做

 @(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss"))) 

你应该做

 var date = row.LastUpdatedDate.ToString("HH:mm:ss") @Html.DisplayFor(m=> date) 

而不是TextBoxFor使用TextBox并在值字段中指定格式即

 @Html.TextBox("textboxName", Model.dateName.ToString("MMM dd yyyy")) 

使用bootstrap datepicker,它看起来像:

 
@Html.TextBox("closeDate", Model.closeDate.ToString("MMM dd yyyy"), new { @class = "form-control", @readonly = "readonly", size = "16", placeholder = Lang.Label_closeDate })