DateTimeの形式にデータ注釈を割り当てますか?


99

私のビューモデルにこの属性があります:

[DataType(DataType.DateTime)]
public DateTime? StartDate { get; set; }

日付を表示したり、テキストボックスに日付を入力したりする場合は、次のようにします。

<%: Model.StartDate %>

<%: Html.TextBoxFor(m => m.StartDate) %>

日付が表示されるときはいつでも、次のように表示されます:01/01/2011 12:00:00 AM

ただし、2011年1月1日のみを表示したい

データ注釈付きの表示形式を適用する方法はありますか?日付を表示するすべてのインスタンスに移動して、それをフォーマットするコードを追加する必要はありません。


回答:


149

タグ付けしてみてください:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

試してみただけですが、TextBoxに時刻が表示され、ページに表示されたばかりです。
スティーブン

3
@Steven:削除し[DataType(DataType.DateTime)]ていない場合は削除してみてください。
デビッドフォックス

8
DisplayFormatEditorForおよびDisplayForヘルパーでのみ機能します。
ΕГИІИО

1
すばらしい答え-「ApplyFormatInEditMode」パラメーターがありませんでした。
CodeHxr 2013年

5
Html.TextBoxForのformatパラメーターでこれを解決できました。に設定@Html.TextBoxFor(model => model.YOUR_DATE, "{0:MM/dd/yyyy}")することで、日付のみを表示することができました。これをここで見つけました[ stackoverflow.com/a/14529347/2938775]
Caffeinius 2015

44

やってみましたか?

[DataType(DataType.Date)]

2
これにより、ブラウザーがサポートしている場合は、HTML5の日付セレクターのサポートも有効になります。
AaronLS 2012年

24

mvc 4では、TextBoxFor.. を使用して次のように簡単に実行できます。

@Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" })

したがって、モデルまたはビューモデルクラスでデータアノテーションを使用する必要はありません。


うん、これらのDataAnnotationsはEditorForヘルパーに最適ですが、IEnumerable(Of Entity)を使用してカスタムグリッドをレンダリングするときは、.TextBoxForを使用する必要があり、これが私の問題でした。ありがとう
bkwdesign 2015

22

データフィールドが既にDateTimeデータ型である場合[DataType(DataType.Date)]、注釈に使用する必要はありません。ただ使用する:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

jQueryでは、カレンダーにdatepickerを使用します

    $(document).ready(function () {
        $('#StartDate').datepicker();
    });

HTMLでは、EditorForヘルパーを使用します。

    @Html.EditorFor(model => model.StartDate)

「データフィールドが既にDateTimeデータ型である場合、使用する必要はありません[DataType(DataType.Date)]」=>これは役に立ちました
Hassan Tareq

しかし、Web APIの場合、表示形式は強制されませんDataFormatString = "{0:MM/dd/yyyy}"(リクエスト本文に他の形式があったとしても、400は取得されませんでした{"dob":"31/12/1990"}
Hassan Tareq

18

次のようなDataAnnotationを適用します。

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]

10

これを使用してください、しかしそれは完全な解決策です:

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]



1

それは私のために働く

[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]

0

モデル作成時に以下のコードを使用してプロパティを設定します。問題は解決されると思います。また、時間はデータベースに表示されません。注釈を追加する必要はありません。

private DateTime? dob;
        public DateTime? DOB
        {
            get
            {
                if (dob != null)
                {
                    return dob.Value.Date;
                }
                else
                {
                    return null;
                }

            }
            set { dob = value; }
        }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.