10

MVC Razor ビューで、DateTime フィールドをフォーマットして時刻のみを表示しようとしています。以下のコードを使用すると、「テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます」というエラーが表示されます。

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

このエラーの原因と修正方法を教えてください。

ご協力いただきありがとうございます。

4

5 に答える 5

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"))

ブートストラップ日付ピッカーを使用すると、次のようになります。

<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 に答える