10

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

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

任何帮助请是什么导致了这个错误以及如何解决它?

谢谢你的帮助。

4

5 回答 5

16

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

@Html.TextBoxFor(m=>row.LastUpdatedDate, 
    new { @Value = Convert.ToString(row.LastUpdatedDate.ToShortDateString()) })
于 2014-04-10T04:49:33.613 回答
15

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

采用

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

或者

@Model.row.LastUpdateDate.ToString("HH:mm:ss")
于 2013-10-17T08:36:34.663 回答
2

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

扩展方法

    /// <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 中的 DateTime to Date

于 2014-04-30T21:20:22.747 回答
1

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

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

而不是这样做

<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>
于 2015-10-22T07:43:28.563 回答
0

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

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

使用引导 datepicker 这看起来像:

<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>
于 2014-08-28T11:58:24.013 回答